我在哪里可以找到Java EE 6 XML库

时间:2011-12-10 22:09:28

标签: java java-ee java-ee-6 jax-rs

我正在学习Java EE 6& Jax-RS(还没有开始关于Jax-RS的任何事情)为我的工作构建一个xml api。我有我的java控制器设置,现在我正在寻找使用我的模型来生成XML输出。我似乎无法通过搜索Google找到任何XML库。有人可以帮助我指出正确的方向吗?

4 个答案:

答案 0 :(得分:5)

如果您使用JAX-RS,您可以使用@Produces(" application / xml"),然后您将拥有一个xml api。 JAX-RS默认使用JAXB。

请参阅http://jersey.java.net/nonav/documentation/latest/jax-rs.html#d4e318

答案 1 :(得分:3)

Java SE已经包含三种样式的XML解析器:

  1. SAX - 您使用SAXParserFactory辅助类创建一个。我相信它是最古老的API,它遵循W3C标准。它也很难使用,因为它通过传递一堆回调来调用解析器,你必须自己跟踪文档中的位置,并且StAX可用时几乎没有理由使用它。它也不能用于编写XML。
  2. DOM - 您使用DocumentBuilderFactory创建解析器。唯一一个提供对已解析的三个随机访问的API。它也是最慢的并且使用最多的内存,因此如果您需要处理大量文档,则不建议使用它。 (尽管可以很好地序列化Web服务输出。)Java的实现遵循W3C标准,这使得API有点混乱,因为它避免遵循Java惯用法。有两种相当流行的替代DOM风格的API,它们更像Java,JDOMdom4j
  3. StAX - 街区的新生儿,特定于Java,以及我个人的最爱。它的工作原理是让您通过一系列事件前进。这使得它比DOM快得多,同时更容易包裹你的头脑。首先使用XMLInputFactory来读取XML,然后使用XMLOutputFactory来编写它。
  4. 如果您要使用JAX-RS,您可能不希望使用这些“低级”XML库。 JAX-RS应该为您处理解析请求和格式化响应。我相信它使用JAXB,也是标准库的一部分。 JAXB将根据类及其控制序列化的字段/属性的注释自动序列化Java对象。

答案 2 :(得分:1)

这些库不是特定于JavaEE的。为了生成XML,StAX和JDOM是我的经验中最常用的。 StAX是JDK的一部分。他们还进行XML解析和验证。

一些教程:1 2

StAX使用基于事件的模型(读取文档,当您看到元素X执行某些操作时),并且毫无疑问,JDOM使用类似于DOM的语法(查找元素X.Y)。 JDOM将整个文档树加载到内存中,这会占用内存但执行速度更快。

Here's概述了两个工具和JAXB。

答案 3 :(得分:1)

就个人而言,我喜欢Simple XML http://simple.sourceforge.net/

的简单性

您也可以考虑使用Java EE6附带的JAXB。 http://www.oracle.com/technetwork/articles/javase/index-140168.html