我的應用程序應解析通過HTTP接收的XML。據我瞭解有解析XML的三種主要方法:解析XML的最佳實踐
- SAX
- DOM
- XmlPullParser
據說,SAX是最快的這些而DOM是不是最佳適用於較大的XML文檔。但是在解析方面什麼是大型XML文檔?對於以下內容,推薦的解析器是什麼?
- XML文檔大小1-5 KB之間
- 容易通過遍歷文件,即我需要知道不僅是當前元素也是父元素。
我的應用程序應解析通過HTTP接收的XML。據我瞭解有解析XML的三種主要方法:解析XML的最佳實踐
據說,SAX是最快的這些而DOM是不是最佳適用於較大的XML文檔。但是在解析方面什麼是大型XML文檔?對於以下內容,推薦的解析器是什麼?
據我瞭解有解析XML的三種主要方法:
- SAX
- DOM
- XmlPullParser
錯!這兩者都不是最好的方法。你真正想要的是使用Simple XML Framework的基於註解的解析。要明白爲什麼遵循這個邏輯:
並且爲了幫助您做到這一點,我將point you to my own blog post解釋瞭如何在Android上使用簡單庫。
除非你有一個100MB的XML文件,那麼Simple對於你來說已經足夠快了。對我來說,我將其用於所有Android XML項目。
N.B.我應該指出,如果您需要用戶下載Android上超過1MB的XML文件,那麼您可能需要重新考慮您的策略。你可能做錯了。
我喜歡將XML數據映射到Java對象的想法,並會試一試。我發現了另一個API,雖然被稱爲VTD-XML,這似乎值得一看。 – 2011-05-31 06:37:52
@Robert Massaioli - 我有一個簡單的XML問題,這個問題是http://stackoverflow.com/questions/12947320/java-simple-xml-serializationsimple-xml-2-6-6-jar-gives-error-用的XML文件。你能爲此提出一些建議嗎? – hemu 2012-11-06 08:54:31
這恐怕是使用Java構建從XML文檔DOM樹4和10之間會消耗的情況下,這取決於 ...
作爲一個經驗法則,乘以文檔的原始大小(假定爲西文本和UTF-8編碼),具體取決於底層實現。因此,如果速度和內存使用不重要,那麼對於您提到的小文檔而言,這不會成爲問題。
DOM通常被認爲是使用XML的一種令人不快的方式。對於背景你可能想看看Elliotte Rusty Harold的介紹:What's Wrong with XML APIs (and how to fix them)。
但是,使用SAX可能會更加繁瑣,因爲文檔一次只能處理一個項目。然而SAX速度很快,消耗的內存很少。如果你可以找到你喜歡的pull解析器,那麼儘量嘗試一下。
另一種方法(不超高效,但乾淨,維護)是建立你的XML的內存樹(使用DOM,說的),然後使用XPath表達式來選擇你感興趣的信息。
還有第四個最好的三種:vtd-xml – 2016-03-08 00:09:17