zoukankan      html  css  js  c++  java
  • XML专题:使用NSXMLParser解析xml文件

    使用NSXMLParser解析xml文件 

        1. 设置委托对象,开始解析 
        NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];   //或者也可以使用initWithContentsOfURL直接下载文件,但是有一个原因不这么做: 
        // It's also possible to have NSXMLParser download the data, by passing it a URL, but this is not desirable 
        // because it gives less control over the network, particularly in responding to connection errors. 
        [parser setDelegate:self]; 
        [parser parse]; 

        2. 常用的委托方法 
        - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
                                    namespaceURI:(NSString *)namespaceURI 
                                    qualifiedName:(NSString *)qName 
                                    attributes:(NSDictionary *)attributeDict; 
        - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName 
                                    namespaceURI:(NSString *)namespaceURI 
                                    qualifiedName:(NSString *)qName; 
        - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string; 
        - (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError; 

        static NSString *feedURLString = @"http://www.yifeiyang.net/test/test.xml"; 

        3.  应用举例 
        - (void)parseXMLFileAtURL:(NSURL *)URL parseError:(NSError **)error 
        { 
            NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:URL]; 
            [parser setDelegate:self]; 
            [parser setShouldProcessNamespaces:NO]; 
            [parser setShouldReportNamespacePrefixes:NO]; 
            [parser setShouldResolveExternalEntities:NO]; 
            [parser parse]; 
            NSError *parseError = [parser parserError]; 
            if (parseError && error) { 
                *error = parseError; 
            } 
            [parser release]; 
        } 

        - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI 
                                            qualifiedName:(NSString*)qName attributes:(NSDictionary *)attributeDict{ 
            // 元素开始句柄 
            if (qName) { 
                elementName = qName; 
            } 
            if ([elementName isEqualToString:@"user"]) { 
                // 输出属性值 
                NSLog(@"Name is %@ , Age is %@", [attributeDict objectForKey:@"name"], [attributeDict objectForKey:@"age"]); 
            } 
        } 

        - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI 
                                            qualifiedName:(NSString *)qName 
        { 
            // 元素终了句柄 
            if (qName) { 
                   elementName = qName; 
            } 
        } 

        - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
        { 
            // 取得元素的text 
        } 
        NSError *parseError = nil; 
        [self parseXMLFileAtURL:[NSURL URLWithString:feedURLString] parseError:&parseError];

    http://blog.csdn.net/z251257144/article/details/7175634

  • 相关阅读:
    05-java学习-循环结构
    04-java学习-选择结构
    03-java学习-基本数据类型-运算符-键盘接收用户输入
    A02-java学习-classpath配置-标识符-java变量类型
    A01-java学习环境准备
    20190215面试-C#操作外设-多线程-shocket
    装饰者模式
    状态模式
    DllImport学习
    网络编程(一)----基础知识、数据流套接字
  • 原文地址:https://www.cnblogs.com/geek6/p/3950949.html
Copyright © 2011-2022 走看看