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

时间:2009-04-23 00:04:28

标签: 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>

在.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。

4 个答案:

答案 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。”

以下是一个例子:

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

答案 3 :(得分:1)

JiBX是另一种选择。

有关Java-to-XML数据绑定的更多意见,请参阅XML serialization in Java?