どのように私はJavaの値オブジェクトにXMLを変換するのですか?
-
13-09-2019 - |
質問
オープンソースライブラリのどのようなJavaの値オブジェクトにXMLを変換するために利用されていますか?
.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()
{
}
}
}
私は事前に定義された、XMLに私の値オブジェクトをバインドすることができますHibernateは、おそらく.NETまたはに似た注釈を、使用方法、があった場合、私は思っていた。
解決
私は特にJAXBに比べ、 XStreamのをたくさん好き - JAXBとは異なり、XStreamのはにあなたを必要としません。 XSDを持っています。あなたがシリアライズとXMLをデシリアライズしたいクラスの一握りを持っている場合は、他の手がかなりあるには、などそのスキーマ、XStreamのからクラスを生成するために実行jaxcをXSDを作成する必要の強引ネスずに、素晴らしいことです軽量ます。
(もちろん、そのようなあなたが機会...に合った既存のXSDを持っているときのようにJAXBが適切である時代、たくさんのがあります)。
他のヒント
JAXB には、XMLスキーマ(XSD)Javaクラスのコレクションにファイルを変換することができます。これは、アンディの(素晴らしい、方法で)答えが提供するXMLEncoder
/ Serializable
のアプローチよりも多くの「構造化」であってもよい。
Javaはあなたがかもしれないと XMLEncoder にありXMLにオブジェクトをシリアル化するために使用することができます。唯一の要件は、あなたのオブジェクトが実装していることである「シリアライズ。」
ここでは一例です。
JiBXのの別のオプションです。
JavaからXMLデータの詳細については意見が結合、Javaで XMLシリアル化を参照してください?