什么样的开源库可用于将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>
在.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。
答案 0 :(得分:13)
我喜欢XStream很多,尤其是与JAXB相比 - 与JAXB不同,XStream不需要你拥有XSD。如果你有一些类要序列化和反序列化为XML,那就太好了,没有需要创建XSD,运行jaxc来从该模式生成类的繁琐程序,等等。另一方面,XStream非常漂亮轻量化。
(当然,有很多时候JAXB是合适的,例如当你有一个适合这种场合的预先存在的XSD时......)
答案 1 :(得分:2)
JAXB允许您将XML Schema(XSD)文件转换为Java类的集合。这可能比Andy(优秀,顺便说一句)答案提供的XMLEncoder
/ Serializable
方法更“结构化”。
答案 2 :(得分:1)
Java有一个XMLEncoder,您可以使用它来将对象序列化为XML。唯一的要求是您的对象实现“Serializable。”
以下是一个例子:
答案 3 :(得分:1)
JiBX是另一种选择。
有关Java-to-XML数据绑定的更多意见,请参阅XML serialization in Java?