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

  • 相关阅读:
    从句分析
    artDialog ( v 6.0.2 ) content 参数引入页面 html 内容
    Java实现 LeetCode 13 罗马数字转整数
    Java实现 LeetCode 13 罗马数字转整数
    Java实现 LeetCode 13 罗马数字转整数
    Java实现 LeetCode 12 整数转罗马数字
    Java实现 LeetCode 12 整数转罗马数字
    Java实现 LeetCode 12 整数转罗马数字
    Java实现 LeetCode 11 盛最多水的容器
    Java实现 LeetCode 11 盛最多水的容器
  • 原文地址:https://www.cnblogs.com/geek6/p/3950949.html
Copyright © 2011-2022 走看看