我应该在Java 5或6中仍然使用JDOM吗?

6

我已经使用 JDOM 进行了一段时间的 XML 解析,但感觉一定有更好或至少更轻量级的用于 Java 5 或 6 的库。

JDOM API 没有问题,但我不喜欢在我的部署中包含 Xerces。如果我只想读取一个 XML 文件或将其输出,是否有更轻量级的替代方案呢?

8个回答

6

在我看来,最好的轻量级替代品是XOM,但JDOM仍然是一个非常好的API,我没有理由去换掉它。

它不依赖于Xerces,但它不需要Apache Xerces发行版,它可以与打包到JRE中的Xerces一起工作。


3

我曾使用javax.xml.stream包(XMLStreamReader/XMLStreamWriter)使用xml pull/push技术读写XML。至今为止,这对我来说都是有效的。


请注意:javax.xml.stream包仅在Java 6中可用。 +1 - Adam Paynter
1
如果您没有Java 6但仍想使用xmlpp,可以查看http://www.xmlpull.org/。javax.stream包不是与xmlpull.org兼容的pull解析器(其API略有不同),但它们非常接近。 - KitsuneYMG
你知道有哪些适合编写XML的第三方流媒体API吗? - Adam Paynter
@Adam http://www.xmlpull.org/v1/download/unpacked/doc/quick_write.html xmlpull 可以读取和写入。 - KitsuneYMG
@kts:太方便了!我想“pull”这个词让我一直误解。 - Adam Paynter

2

最近有一个针对Java 5的JDOM分支被称为coffeeDOM。你应该去看看。


+1:CoffeeDOM确实是一个非常方便的分支,使得使用API更加方便和有趣。 - ngeek

2
我们使用 JAXB - 它基于模式生成类。您可以在没有模式的情况下生成文件,并注释您想要的 XML 的方式。

我不会把JAXB称为JDOM的替代品,因为它解决的问题相当不同。 - skaffman
1
从问题中我理解到需要读取和写入特定的XML。如果是这样,为什么不定义一个模式并保存所有繁琐的解析呢?如果需要编写任意的XML,那么我同意(我相信这是相当罕见的情况)。 - David Rabinowitz
+1 我完全同意,先编写您的领域/配置对象,然后再考虑 XML。 - Adam Gent

0
你应该看一下Commons Digester(参见我在这里给出的回答)。它提供了一种非常轻量级的解析XML的机制。

0

JDOM非常好用且简单。在JDOM发布后,出现了许多新的解析XML的方法,但这些方法的重点与简单性不同。当您拥有已知的XML文档且其模式不会每天更新时,JAXB在某些情况下可以简化事情。 对于非常大的XML文件(数百MB),新的推送解析器非常好用甚至是必需的。 SAX解析器的速度优势可以提高十倍。


0

0

我认为JAXP对你来说是一个不错的选择。 它是标准的,包含在JDK中,提供清晰的接口,并允许连接任何实现.. 如果你只需要读写不是很大且不是过于复杂的xml文件,JDK中嵌入的JAXP DOM api将满足你的需求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接