NSXMLParser实现XML解析

        iOS自带的XML解析类是NSXMLParser,对其解析简要说明 :

1、是SAX方式解析

2、主要步骤是:

    (1)创建NSXMLParser实例(alloc)

    (2)初始化parser

    (3)定义 parser的delegate

    (4)[parser parse];

 ++++++当parser初始化并执行parse语句时([parser parse]),程序会跳到代理方法里面走第一个代理方法++++++

3、这种解析方式是利用它的代理NSXMLParserDelegate实现的

(1)- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict

开始处理xml数据,它会把整个xml遍历一遍,识别元素节点名称。

(2)- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string

也就是得到文本节点里存储的信息数据。

(3)- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName

存储从第二个代理方法中获取到的信息 

另外:

解析开始:

 - (void)parserDidStartDocument:(NSXMLParser *)parser; 

解析结束:

 - (void)parserDidEndDocument:(NSXMLParser *)parser; 

解析出错:

  - (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError;

注意:

解析xml数据的时候,

                 每当遇到元素节点的时候都会执行第一个代理方法,如果有属性节点,可以直接在这个方法中获取里面的值;

                  每当遇到文本节点的时候都会执行第二个代理方法,获取文本节点中的值然后到第三个方法中进行区分。

                          如果是换行符的话也会获取,因为换行符也是文本节点,不过当一个元素节点结束后的换行符是不会获取的。

   比如说:      (换行符1)

                                                  <li>文本节点</li>

                                                  (换行符2)

               元素节点前后各有一个换行符,这时只会获取换行符1,而不会获取换行符2。


原文出处:http://blog.csdn.net/like7xiaoben/article/details/7699965


你可能感兴趣的:(代理,sax,XMLParser)