2009-08-27 34 views
6

我一直在使用JDOM進行一般XML解析,但感覺Java 5或6必須有更好的東西,或者至少更輕量級。我仍然應該使用Java 5或6的JDOM嗎?

JDOM沒有錯API,但我不喜歡在部署中包含Xerces。有沒有更輕量級的選擇,如果我想要做的只是讀取XML文件或寫出一個?

回答

6

最好的輕量級替代是,在我看來,XOM,但JDOM仍然是一個非常不錯的API,並且我認爲沒有理由將其替換。儘管(至少,它不需要Apache Xerces發行版,它與打包到JRE中的Xerces一起工作),但它並不依賴於Xerces(儘管它至少不需要Apache Xerces發行版)。

2

我們用JAXB - 它基於架構的類。你可以在沒有模式的情況下生成你的文件,並且只需要註釋你希望xml是怎樣的。

+0

我不會稱JAXB爲JDOM的替代品,但它解決了相當不同的問題。 – skaffman 2009-08-27 13:25:28

+1

從這個問題我明白,需要讀取和寫入特定的XML。如果是這樣,爲什麼不定義一個模式並保存所有繁瑣的解析。如果需要寫一個任意的xml,那麼我同意(我相信這是相當罕見的情況) – 2009-08-27 18:50:40

+0

+1我完全同意先寫你的域/配置對象,然後擔心XML。 – 2011-04-02 14:23:33

3

我用過的javax.xml.stream包(XMLStreamReader的/ XMLStreamWriter)來讀取和使用XML推/拉技術編寫XML。到目前爲止,它對我來說很有用。

+0

+1,注意javax.xml.stream包僅在Java 6中可用。 – 2009-08-27 13:37:23

+1

如果您沒有Java 6,但仍想使用xmlpp,則可以查看http://www.xmlpull.org/ 。 javax.stream包不是xmlpull.org兼容的pull解析器(它的API稍有不同),但它們非常接近。 – KitsuneYMG 2009-08-27 17:52:35

+0

您是否知道任何適用於*寫入* XML的第三方流媒體API? – 2009-08-28 18:53:24

0

JDOM非常好,很簡單。在JDOM發佈之後,有很多新的方法來解析XML,但這些方法的重點與簡單性不同。 JAXB在一些情況下使事情變得簡單,如果您有熟悉的XML文檔,那麼您的架構不會每天更新。 新推解析器非常好,甚至對於非常大的XML文件(數百MB)也是強制性的。 SAX解析器的速度優勢可以提高10倍。

0

我想認爲JAXP是你的好最佳的選擇。 它是標準的,包含在JDK,它提供了清晰的界面,允許掛鉤的任何實現.. 如果所有你所需要的是讀寫不是非常大,過於複雜的XML文件,嵌入在JDK JAXP DOM API將覆蓋你要求。

2

有最近JDOM的名爲coffeeDOM Java 5的叉子。你應該檢查一下。

+0

+1:CoffeeDOM確實是一個非常方便的分支,使API的工作更加方便和有趣 – ngeek 2011-10-06 20:58:36