iOS自带的XML解析类是NSXMLParser,对其解析简要说明 :
1、是SAX方式解析
2、主要步骤是:
(1)创建NSXMLParser实例(alloc)
(2)初始化parser
(3)定义 parser的delegate
(4)[parser parse];
++++++当parser初始化并执行parse语句时([parserparse]),程序会跳到代理方法里面走第一个代理方法++++++
3、这种解析方式是利用它的代理NSXMLParserDelegate实现的
(1)-(void)parser:(NSXMLParser*)parserdidStartElement:(NSString*)elementNamenamespaceURI:(NSString*)namespaceURIqualifiedName:(NSString*)qNameattributes:(NSDictionary*)attributeDict
开始处理xml数据,它会把整个xml遍历一遍,识别元素节点名称。
(2)-(void)parser:(NSXMLParser*)parserfoundCharacters:(NSString*)string
也就是得到文本节点里存储的信息数据。
(3)-(void)parser:(NSXMLParser*)parserdidEndElement:(NSString*)elementNamenamespaceURI:(NSString*)namespaceURIqualifiedName:(NSString*)qName
另外:
解析开始:
-(void)parserDidStartDocument:(NSXMLParser*)parser;
解析结束:
-(void)parserDidEndDocument:(NSXMLParser*)parser;
解析出错:
-(void)parser:(NSXMLParser*)parserparseErrorOccurred:(NSError*)parseError;
注意:
解析xml数据的时候,
每当遇到元素节点的时候都会执行第一个代理方法,如果有属性节点,可以直接在这个方法中获取里面的值;
每当遇到文本节点的时候都会执行第二个代理方法,获取文本节点中的值然后到第三个方法中进行区分。
如果是换行符的话也会获取,因为换行符也是文本节点,不过当一个元素节点结束后的换行符是不会获取的。
比如说: (换行符1)
<li>文本节点</li>
(换行符2)
元素节点前后各有一个换行符,这时只会获取换行符1,而不会获取换行符2。