题
什么样的开放源码库可用于XML转换成Java值对象?
在净,有一种方法可以容易地与XML序列化和属性做到这一点。我会想象有一些Java中的并行。我知道如何与DOM和SAX解析器做到这一点,但我不知道是否有一个更简单的方法。
我有一个看起来像这样预先定义的XML格式。
<FOOBAR_DATA>
<ID>12345</ID>
<MESSAGE>Hello World!</MESSAGE>
<DATE>22/04/2009</DATE>
<NAME>Fred</NAME>
</FOOBAR_DATA>
在净,我可以做这样的事情到我的对象绑定到的数据。
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或也许休眠的方法,这将允许我值对象绑定到所述预定义的XML。
解决方案
我喜欢 XStream的了很多,特别是相对于JAXB - 不像JAXB,XStream的不需要你来有一个XSD。这是伟大的,如果你有你想要序列化和反序列化到XML类屈指可数,而无需创建一个XSD,运行jaxc而产生与模式等的XStream类的重手岬,另一方面是相当轻量化。
(当然,也有大量的时间,其中JAXB为宜,例如当你有一个预先存在的XSD适合的场合...)
其他提示
JAXB 允许你转换一个XML Schema(XSD)文件转换成Java类的集合。这可能是更“结构化”比XMLEncoder
/ Serializable
办法,Andy的(优,顺便)答案提供。
Java有一个 XMLEncoder ,你可能可以使用序列化对象到XML。唯一的要求是,你的对象实现“序列化。”
下面是一个例子:
JiBX的是另一种选择。
有关Java到XML数据的更多的意见结合,请参见 XML序列化在Java中?一>
不隶属于 StackOverflow