XML解析

来源:互联网 发布:狸猫视频编辑软件 编辑:程序博客网 时间:2024/04/30 00:54
XML解析NSXMLParser解析过程实例化NSXMLParser,传入从服务器接收的XML数据定义解析器代理解析器解析通过解析代理方法完成XML数据的解析///////////////////////////////////////////////////////////////NSXMLParser解析代理方法// 1. 开始解析XML文档- (void)parserDidStartDocument:// 2. 开始解析某个元素,会遍历整个XML,识别元素节点名称- (void)parser:didStartElement:namespaceURI:qualifiedName:attributes:// 3. 文本节点,得到文本节点里存储的信息数据,对于大数据可能会接收多次!为了节约内存开销- (void)parser:foundCharacters:// 4. 结束某个节点,存储从parser:foundCharacters:方法中获取到的信息- (void)parser:didEndElement:namespaceURI:qualifiedName:注意:在解析过程中,2、3、4三个方法会不停的重复执行,直到遍历完成为止// 5. 解析XML文档结束- (void)parserDidEndDocument:// 6. 解析出错- (void)parser:parseErrorOccurred:///////////////////////////////////////////////////////////////案例:(这只是代码,功能没有验证)/** *  XML解析 */- (void)xmlWithRequest{    NSString *xmlTxt = @"<?xml version=\"1.0\" encoding=\"UTF-8\"?><recipe><recipename>Ice Cream Sundae</recipename><ingredlist><listitem><quantity>3</quantity><itemdescription>chocolate syrup or chocolate fudge</itemdescription>    </listitem>    <listitem>    <quantity>1</quantity>    <itemdescription>nuts</itemdescription>    </listitem>    <listitem>   <quantity>1</quantity>    <itemdescription>cherry</itemdescription>    </listitem>    </ingredlist>    <preptime>5 minutes</preptime>    </recipe>";        //1、获取解析器    NSURL *url = [NSURL URLWithString:xmlTxt];    NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url];        //2、设置代理(将代理完成)    parser.delegate = self;        //3、开始解析    [parser parse];    }// 1. 开始解析XML文档- (void)parserDidStartDocument:(NSXMLParser *)parser{    NSLog(@"开始解析");}// 2. 开始解析某个元素,会遍历整个XML,识别元素节点名称- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{    NSLog(@"开始节点:%@, %@", elementName, attributeDict);}// 3. 文本节点,得到文本节点里存储的信息数据,对于大数据可能会接收多次!为了节约内存开销- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{    NSLog(@"%@", string);}// 4. 结束某个节点,存储从parser:foundCharacters:方法中获取到的信息//注意:在解析过程中,2、3、4三个方法会不停的重复执行,直到遍历完成为止- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{    NSLog(@"开始节点:%@", elementName);}// 5. 解析XML文档结束- (void)parserDidEndDocument:(NSXMLParser *)parser{    NSLog(@"结束解析");}// 6. 解析出错- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError{    NSLog(@"错误处理");}

0 0