不要使用NSXMLParser解析特定标记

时间:2014-09-30 05:42:56

标签: ios objective-c xml nsxmlparser

考虑下面的XML:

<root>
    <bar>
        <p>Hello <italic>World</italic></p>
    </bar>
    <banjo><p>Hello <italic>World</italic></p></banjo>
</root>

我目前正在使用https://github.com/nicklockwood/XMLDictionary来解析XML数据。我想忽略<p><italic>标记。我怎样才能做到这一点?

NSDictionary应该看起来像这样的结构:

-root
--bar
---<p>Hello <italic>World</italic></p>
--banjo
---<p>Hello <italic>World</italic></p>

1 个答案:

答案 0 :(得分:0)

所以快速浏览一下XMLDictionary类似乎表明它只是包装标准NSXMLParser并使用XML元素的 all 创建一个方便的字典对象。

如果你致力于那个github代码,那么你可以在解析XML之后浏览你生成的字典,并将<p><italic>元素重新构造回父元素。但这种效率非常低,绝对不推荐,除非你的XML很短,XMLDictionary类的好处保证了额外的工作。

您还可以深入了解XMLDictionary代码,特别是parser:didStartElementparser:didEndElement方法,并进行一些更改以忽略<p><italic>代码。这应该有效地将结构扁平化为接近示例结果的东西。

但是,如果您正在考虑在该代码中进行探索,那么您也可以直接使用NSXMLParser,以相同的方式忽略这些标记。这将使您更加严格地控制解析,并可以减少一些不必要的对象创建,特别是如果您的XML具有相当大的规模。只需阅读NSXMLParserDelegate,甚至可以浏览XMLDictionary代码,看看它是如何做到的。