2009-08-27 47 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