2009-12-17 32 views
2

我想知道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

回答

2

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

0

它提供了一個狹義的目的,但如果你的目標是解析不整齊的HTML,你可能想嘗試一個靜態庫,我開始叫TagScraper。它不能正確處理許多/大多數XML/HTML實體,但它可以很容易地修補到。網址:http://github.com/searls/TagScraper

其價值在於,它提供了隱藏了整理/查詢/組裝用於你一個簡單的XPath機構,然後將其提供解析的元素在Tag.h節點的樹狀數據結構&屬性。