【问题标题】:NSXMLParser on iOS, how do I use it given a xml fileiOS上的NSXMLParser,给定一个xml文件我如何使用它
【发布时间】:2011-02-27 05:09:33
【问题描述】:

我想知道如何使用 NSXML 解析器。 所以假设我有一个简单的 xml 文件,其中包含以下元素:

<Today>
<Date>1/1/1000</Date>
<Time>14:15:16</Time>
</Today>

我如何使用 NSXMLParser 来解析 XML 文件(它在本地 btw 桌面上),检查每个元素并将它们中的每一个存储在一个数组中以便以后显示/使用?

我正在查看一些关于它的文档,但我不知道如何使用解析器 我知道有 3 种方法(或更多,如果我错了,请纠正我)可以被覆盖 -..etc didStartElement -..etc didEndElement -..etc 发现字符

【问题讨论】:

    标签: ios xml cocoa nsxmlparser


    【解决方案1】:

    最简单的事情是这样做:

    NSXMLParser *xmlParser = [[NSXMLParser alloc]initWithData:<yourNSData>];
    [xmlParser setDelegate:self];
    [xmlParser parse];
    

    请注意 setDelegate: 将委托设置为“self”,即当前对象。因此,您需要在该对象中实现您在问题中提到的委托方法。

    在您的代码中进一步向下粘贴:

        - (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
            namespaceURI:(NSString *)namespaceURI
           qualifiedName:(NSString *)qualifiedName 
             attributes:(NSDictionary *)attributeDict{
    
           NSLog(@"I just found a start tag for %@",elementName);
           if ([elementName isEqualToString:@"employee"]){
           // then the parser has just seen an <employee> opening tag
           }         
         }
    
    - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
    NSLog(@"the parser just found this text in a tag:%@",string);
    }
    

    等等。等等

    当您想要将变量设置为某个标记的值时会有点困难,但通常使用类变量 caleld 来完成,例如“BOOL inEmployeeTag”,您在didStartElement: 方法和 didEndElement: 方法中的 false - 然后在 foundCharacters 方法中检查它的值。如果是,则将 var 分配给字符串的值,如果不是,则不分配。

    理查德

    【讨论】:

      猜你喜欢
      • 2013-02-16
      • 1970-01-01
      • 1970-01-01
      • 2010-11-21
      • 2012-10-01
      • 1970-01-01
      • 2011-12-30
      • 2015-08-09
      • 2012-01-24
      相关资源
      最近更新 更多