使用 NSXMLParser 根据属性解析 XML

Posted

技术标签:

【中文标题】使用 NSXMLParser 根据属性解析 XML【英文标题】:parsing XML according to attributes with NSXMLParser 【发布时间】:2014-12-05 10:16:25 【问题描述】:

我想根据他们的属性解析xml并保存为字典。

xml 输出看起来是这样的

<Tracking event="firstElement">
http://www.firstElement.com
</Tracking>

我现在正在做的是:

获取跟踪和保存 URL 的标签名称。但在 final 中,哪个 URL 链接的事件方法是未知的。

我必须将它保存在 NSDictionary 上并这样称呼它:

[字典 objectForKey:@"firstElement"];

-> (NSURL *) http://www.firstElement.com

我该如何实现? 最好的问候..

【问题讨论】:

【参考方案1】:

您可以在 NSXMLParserDelegate 中获取事件:

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

    // reset temp data
    [self.mutableData setString:@""];

    if([elementName isEqualToString:@"Tracking"]) 
        NSString *event = [attributeDict objectForKey:@"event"];
    


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

    [self.mutableData appendString:string];


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

    if([elementName isEqualToString:@"Tracking"]) 
        NSString *URL = [NSString stringWithFormat:@"%@", self.mutableData];
    

解析以获取 URL 并使用 @event:URL 设置字典

mutableData 是属性 MutableString

@property (nonatomic) NSMutableString *mutableData;

希望对你有帮助:)

【讨论】:

所以当我设置事件时。我怎样才能到达网址? 真的没有得到 NSString *event 部分。我们将在哪里使用它? 该代码仅向您展示如何获取您想要的值。在您的情况下,您只需将事件保存在 ivar 中,并在获取 URL 时在字典中添加一个条目。 小心,上面的代码不关心 XML 中的换行符。您可能需要为 foundCharacters: 方法中的内容添加检查 最后我用 NSDictionary 处理了。谢谢你:))

以上是关于使用 NSXMLParser 根据属性解析 XML的主要内容,如果未能解决你的问题,请参考以下文章

iOS - OC - XML 解析 - NSXMLParser

在 NSXMLParser 中解析 xml

NSXMLParser读取XML文件并将数据显示到TableView上

如何使用 NSXMLParser 解析同名的父子元素

NSXMLParser 将 RSS 解析为自定义对象

XML解析