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

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

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

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

 12345 Hello World! 22/04/2009 Fred  

在.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() { } } } 

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

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

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

JAXB允许您将XML Schema(XSD)文件转换为Java类的集合。 这可能XMLEncoder (优秀,顺便说一句)答案提供的XMLEncoder / Serializable方法更“结构化”。

Java有一个XMLEncoder ,您可以使用它来将对象序列化为XML。 唯一的要求是您的对象实现“Serializable”。

这是一个例子:

http://www.developer.com/java/web/article.php/1377961

JiBX是另一种选择。

有关Java-to-XML数据绑定的更多意见,请参阅Java中的XML序列化?