2009-04-23 71 views
2

什麼樣的開源庫可用於將XML轉換爲java值對象?如何將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或可能休眠的方法,這將允許我值對象綁定到預定義的XML。

回答

13

我喜歡XStream很多,特別是與JAXB相比 - 不像JAXB,XStream不需要你有XSD。如果你有一些你想要序列化和反序列化爲XML的類,這很好,不需要過多的手動創建XSD,運行jaxc來從那個模式生成類,等等。另一方面,XStream很漂亮輕巧。

(當然,也有很多次,其中JAXB是合適的,比如當你有一個適合的場合......預先存在的XSD)

+0

非常容易使用。我以前聽說過這個,但是我沒有投入使用。謝謝! – Kevin 2009-04-23 00:56:23

2

JAXB允許你轉換一個XML Schema(XSD)文件轉換成Java類的集合。這可能比安迪(答案很好)的答案提供的XMLEncoder/Serializable方法更「結構化」。