用于XML解析的Objective-C库

用于XML解析的Objective-C库

问题描述:

我想知道Objective-C中用于xml解析的一些库。我认为这是一个很普遍的需求,但我发现有限的资源来处理这个任务:用于XML解析的Objective-C库

有什么用Objective-C语言XML工作的最佳解决方案?请指教。

您用于产品的解决方案是什么?

+0

你有使用NSXMLParser有什么问题? 你确定你想要SAX(解析),而不是DOM? – martinr 2009-12-17 17:42:35

+0

是的,我的意思是SAX不是DOM。我使用NSXML解析器的问题是它使用起来不是很方便。要在复杂的xml结构中导航,这是一团糟。请建议您认为最能解决问题的工具。 – 2009-12-17 23:04:00

NSXMLParser是一个面向流的类;您可以设置它并在检测到某些内容时获取委托回调。通常这不是你想要做的,但可以更快,更低的内存。

TouchXML将使用libxml解析XML本身,并为整个XML结构创建一个对象树。这使您可以使用手动遍历方法或基本XPath轻松访问XML树的内容(计划提供更复杂的XPath支持)。

+0

您好Steve,我知道这两个资源用于学习touchxml和libxml2。你有更多与我们分享? TouchXML教程:http://dblog.com.au/general/iphone-sdk-tutorial-building-an-advanced-rss-reader-using-touchxml-part-1/ libxml2教程:http:// cocoawithlove .com/2008/10/using-libxml2-for-parsing-and-xpath.html – 2009-12-29 10:17:23

+0

不确定要直接使用libxml2。在大多数情况下,TouchXML被设计为NSXML *类的替代实现,因此您可以查看TouchXML中需要的类的Mac特定文档(例如CXMLDocument-> NSXMLDocument,CXMLElement-> NSXMLElement,CXMLNode-> NSXMLNode等)。 通常,您只需要用您需要的XML创建一个CXMLDocument对象。然后,可以使用手动遍历(使用childAtIndex :)或使用XPath和 - [CXMLNode nodesForXPath:error:]来查询根元素。 希望帮助! – 2010-01-03 19:55:03

它提供了一个狭义的目的,但如果你的目标是解析不整齐的HTML,你可能想尝试一个静态库,我开始叫TagScraper。它不能正确处理许多/大多数XML/HTML实体,但它可以很容易地修补到。网址:http://github.com/searls/TagScraper

其价值在于,它提供了隐藏了整理/查询/组装用于你一个简单的XPath机构,然后将其提供解析的元素在Tag.h节点的树状数据结构&属性。