【XPath语法】
//XML路径语法
【作用】快速的锁定某一级的节点。可以免去一层层复杂的节点搜索
XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。
/root/books/book/name
author//name
===============================================
【MVC设计模式】
使用MVC设计模式解析新浪网数据
http://rss.sina.com.cn/sina_all_opml.xml
===============================================
【NSXMLParser】
对xml进行解析的标准有两种:sax以及dom。
首先这两种标准并不是针对java的,他们在各种语言环境下都可以实现。dom是真正的国际标准。sax是事实的标准,它不由任何商业组织维 护,而是由一个非商业的组织在运作。就像iso7层模型和tcp/ip一样,虽然sax不是正式的标准,但是一点不影响其在xml解析领域的地位。
dom实现的原理是把整个xml文档一次性读出,放在一个树型结构里。在需要的时候,查找特定节点,然后对节点进行读或写。它的主要优势是实现简单,读写平衡;缺点是比较占内存,因为他要把整个xml文档都读入内存,文件越大,这种缺点就越明显。
sax的实现方法和dom不同。
SAX解析XML,是基于事件通知的模式,一边读取XML文档一边处理,不必等整个文档加载完之后才采取操作,当在读取解析过程中遇到需要处理的对象,会发出通知对其进行处理。由于该方法 只在xml文档中查找特定条件的内容,并且只提取需要的内容。这样做占用内存小,灵活,正好满足我们的需求。
在iOS中,可以通过NSXMLParser实现sax方法解析xml文件。
对于NSXMLParser,常用的初始化方法有两种:通过XML的URL初始化和通过本地的XML文件初始化。
使用NSXMLParser解析XML数据的关键是实现NSXMLParserDelegate中的5个方法:
/* 开始解析xml文件,在开始解析xml节点前,通过该方法可以做一些初始化工作 */
- (void)parserDidStartDocument:(NSXMLParser *)parser
{
NSLog(@"开始解析xml文件");
}
/* 当解析器对象遇到xml节点的开始标记时,调用这个方法开始解析该节点 */
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
attributes:(NSDictionary *)attributeDict
{
NSLog(@"发现节点");
}
/* 当解析器找到开始标记和结束标记之间的字符时,调用这个方法解析当前节点的所有字符 */
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
NSLog(@"正在解析节点内容");
}
/* 当解析器对象遇到xml节点的结束标记时,调用这个方法完成解析该节点 */
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
NSLog(@"解析节点结束");
}
/* 解析xml文件结束 */
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
NSLog(@"解析xml文件结束");
}