2010-11-16 127 views
0

有沒有人如何使用TTXMLParser。我找不到任何文檔或示例代碼。TTXMLParser示例代碼?

它是SAX還是DOM?

它支持Xpath嗎?

我可以從元素中提取CDATA嗎?

我有一個應用程序已經使用了幾個Three20模塊,這將是一個恥辱,必須使用另一個解析器。

回答

2

我發現TTXMLParser的主要文檔是header file。那裏的評論給出了TTXMLParser的功能概述。

TTXMLParser不應該像你想象的那樣真正被認爲是一個XML解析器 - 在這個意義上,諸如「它是SAX還是DOM」和「它支持XPath」的問題不是直接適用。相反,將TTXMLParser視爲一種便利類,可以將XML轉換爲Objective-C對象樹。例如,該XML節點:

<myNode attr1="value1" attr2="value2" /> 

就會變成其映射鍵「attR1位」爲值「VALUE1」和鍵「attR2位」設定在鍵「VALUE2」一個Objective-C NSDictionary節點。

TTXMLParser在內部使用NSXMLParser(基本上是SAX)來構建它的樹,但是作爲TTXMLParser的用戶,您不必做任何SAX類的事情。

因此,不會,最終不會得到可以在其上執行XPath查詢的XML文檔。相反,你最終會得到一個Objective-C對象樹。如果這就是你想要的,那很好;如果你想要一個XPath的傳統XML解析器,我目前正在使用Three20和TouchXML的項目。 TouchXML支持XPath。

我同意很難找到TTXMLParser的示例代碼。 Three20的TTTwitter樣本使用使用TTXMLParser(實際上,實際上,TTURLXMLResponse,它反過來使用TTURLParser),但在某些時候改爲使用TTURLJSONResponse代替,這是一個恥辱,因爲這是他們唯一的XML樣本。

您仍然可以看到舊的基於XML的示例代碼here。具體來說,查看文件底部附近的-[requestDidFinishLoad:]函數,查看TTURLXMLResponse,查詢其rootObject成員的代碼示例,然後沿着結果樹對象走。