2009-06-16 17 views

回答

6

XOM是非常快與標準W3C DOM相比較快。如果這是你的首要任務,那沒有比這更好的了。

但是,它仍然是一個DOM類型的API,所以它不是內存高效的。它不是SAX或STAX的替代品。

1

您如何訪問您的數據?

如果是單程,則不需要在內存中構建樹。您可以使用SAX(快速,簡單)或StAX(更快,並不那麼簡單)。

如果您需要保留內存中的樹來導航,XOMJDOM是不錯的選擇。 DOM最後選擇度假村,無論是第1,2或3級,有無擴展名。

Xerces是Java附帶的解析器(儘管您應該從Apache獲得更新的版本,而不是使用與Java捆綁在一起的版本,即使在6.0中也是如此),也有一個名爲XNI的流本地接口。

如果您想要將其他預製零件掛鉤在鏈中,通常SAX或StAX可以很好地工作,因爲它們可能會在內存中構建自己的模型。例如,Saxon XSLT/XQuery引擎可以與DOM,SAX或StAX一起使用,但在內部構建一個TinyTree(默認)或DOM(可選)。 DataDirect XQuery也適用於SAX,StAX或DOM,但真的喜歡StAX。

+4

奇怪的是,你說SAX比StAX簡單。 SAX可能是一個更簡單的API,但是編寫基於StAX的代碼比寫SAX要容易得多。 – skaffman 2009-06-16 13:50:00

4

你可能想要檢查這個question about the best XML library及其頂部(XOM)的答案;很多關於XOM優點的細節。 (如果有什麼不清楚的地方,請發表評論; PeterŠtibraný似乎內部和外部都知道XOM。)

如上所述,與標準javax.xml相比,XOM在大多數任務中非常快速和簡單。有關示例,請參閱this post,其中提供了有關在Java中讀取XML文件的最簡單方法的問題。我收集了一些很好的例子,讓XOM看起來很不錯(而且javax.xml相當笨拙)。 :-)

因此,我個人認爲XOM在評估之後(如你可以在鏈接的帖子中看到的那樣);對於任何新的Java項目,我很可能選擇XOM進行XML處理。我發現的唯一缺點是它doesn't directly support streaming XML(不像dom4j我來自哪裏),但a simple workaround它可以流就好。

+0

我看到你的問題http://stackoverflow.com/questions/967288/how-to-stream-xml-data-using-xom有一個公認的答案。流式傳輸仍然是XOM的一個缺點嗎? – Sundeep 2013-07-11 18:22:04