不要使用的NSXMLParser
问题描述:
考虑下面的XML解析不特定的标记:不要使用的NSXMLParser
<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>
答
所以在那个XMLDictionary类一瞥,似乎表明它只是包装标准NSXMLParser
并创建与所有的一个方便的字典对象XML元素。
如果您正在致力于这一github上的代码,那么你可能会通过你得到的字典之后解析XML和重组<p>
和<italic>
元素回父元素。但是这样效率很低,除非你有非常短的XML,并且XMLDictionary
类的好处保证了额外的工作,否则绝对不推荐。
你也可以挖掘到XMLDictionary
代码,特别是parser:didStartElement
和parser:didEndElement
方法,并做一些修改忽略<p>
和<italic>
标签。这应该有效地将结构扁平化,以接近您的示例结果。
但是,如果你正在考虑在代码中寻找,你可能会直接使用NSXMLParser
,忽略这些标签的方式相同。这样可以更好地控制解析,并可以减少一些不必要的对象创建,特别是如果您的XML具有相当大的尺寸。请阅读NSXMLParserDelegate,甚至通过XMLDictionary
代码,看看它如何做你喜欢的事情。