用于生成/使用REST服务的最佳Java XML解析器

at.*_*at. 2 java xml vtd-xml xml-parsing

目前使用Java的内置XML DOM库进行创建/解析.丑陋,即使有很多辅助类和方法,性能和内存使用也很糟糕.

在生成和使用REST服务方面,处理XML的最佳Java工具或框架是什么?

我使用的服务使用JAXB.我能够使用他们的课程,方便,轻松地使用他们的服务.它很漂亮,但在大多数情况下JAXB仍然很痛苦.所以我查看了StAX和VTD-XML.StAX在大约4年内没有更新.VTD-XML是Java中XML处理的最新技术吗?

Qwe*_*rky 6

您应该能够编写JAXB注释类,Jersey支持这些开箱即用并自动为您解析它们.它可能不是最高性能的解决方案,但它是一个非常好的干净应用程序.

除非你能证明你有性能问题(并且可以追溯到JAXB),否则我不会担心编组/解组开销.

编辑:
JAXB注释类可以非常简单.建模XML就像;

<customer>
  <name>Fred</name>
  <email>fred@email.com</email>
  <id>12345</id>
</customer>
Run Code Online (Sandbox Code Playgroud)

就像这样容易;

@XmlRootElement
public class Customer
{
  private String name;
  private String email;
  private long id;

  public Customer()
  {
  }

  //getters and setters
}
Run Code Online (Sandbox Code Playgroud)

然后你可以写这样的服务;

@GET
@Produces(MediaType.APPLICATION_XML)
@Path("/getCustomer")
public Customer getCustomer()
{
  Customer c = new Customer();
  c.setName("Fred");
  c.setEmail("fred@email.com");
  c.setId(12345);
  return c;
}
Run Code Online (Sandbox Code Playgroud)

..和这样的客户;

Client client = Client.create();
WebResource resource = client.resource("myHost/getCustomer");
Customer fred = resource.get(Customer.class):
Run Code Online (Sandbox Code Playgroud)

非常简单.