如何将XML转换为java值对象?

Kev*_*vin 2 java xml xml-parsing

什么样的开源库可用于将XML转换为java值对象?

在.Net中,有一种方法可以使用xml序列化和属性轻松完成此操作.我想在java中有一些并行.我知道如何使用DOM或SAX解析器执行此操作,但我想知道是否有更简单的方法.

我有一个预定义的XML格式,看起来像这样.

<FOOBAR_DATA>
  <ID>12345</ID>
  <MESSAGE>Hello World!</MESSAGE>
  <DATE>22/04/2009</DATE>
  <NAME>Fred</NAME>
</FOOBAR_DATA>
Run Code Online (Sandbox Code Playgroud)

在.Net中,我可以做这样的事情来将我的对象绑定到数据上.

using System;
using System.Xml.Serialization;

    namespace FooBarData.Serialization
    {
      [XmlRoot("FOOBAR_DATA")]
      public class FooBarData
  {
    private int _ID = 0;
    [XmlElement("ID")]
    public int ID
    {
      get { return this._ID; }
      set { this._ID = value; }
    }

    private string _Message = "";
    [XmlElement("MESSAGE")]
    public string Message
    {
      get { return this._Message; }
      set { this._Message = value; }
    }

    private string _Name = "";
    [XmlElement("NAME")]
    public string Name
    {
      get { return this._Name; }
      set { this._Name = value; }
    }

    private Date _Date;
    [XmlElement("DATE")]
    public Date Date
    {
      get { return this._Date; }
      set { this._Date= value; }
    }

    public FooBarData()
    {
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一个使用注释的方法,类似于.Net或者可能是Hibernate,这将允许我将我的值对象绑定到预定义的XML.

mat*_*t b 13

我喜欢XStream,特别是与JAXB相比 - 与JAXB不同,XStream不需要你拥有XSD.如果你有一些类要序列化和反序列化为XML,那就太好了,没有需要创建XSD,运行jaxc来从该模式生成类的繁琐程序,等等.另一方面,XStream很漂亮轻巧.

(当然,有很多时候JAXB是合适的,例如当你有一个适合这种场合的预先存在的XSD时...)