私のJavaに以下のようなフィールドがあるxmlタグHelloがあります
class HelloWorld{
@XmlElement
private String name;
}
アンマーシャリング中に、Hello 値が name 変数に正常に割り当てられます。マーシャリングを行っているこの Java オブジェクト (HelloWorld) から新しい xml を作成したいのですが、この場合、xml の代わりに xml タグが必要です。Jaxbでこれを達成するにはどうすればよいですか?
どちらの Xml も自分の管理下にないため、タグ名を変更できません
編集:
着信 XML - helloworld.xml
<helloworld>
<name>hello</name>
</helloworld>
@XmlRootElement(name="helloworld)
class HelloWorld{
@XmlElement(name="name")
private String name;
// setter and getter for name
}
JaxbContext context = JAXBContext.newInstance(HelloWorld.class);
Unmarshaller un = conext.createUnmarshaller un();
HelloWorld hw = un.unmarshal(new File("helloworld.xml"));
System.out.println(hw.getName()); // this will print hello as <name> tag is mapped with name variable.
ここで、HelloWorld オブジェクトのこの hw オブジェクトを使用して、以下のような xml を作成します。
<helloworld>
<name_1>hello</name_1> // Note <name> is changed to <name_1>
</helloworld>
Helloworld のような別のクラスを作成して、その新しいクラスで変数 name_1 を宣言したくありません。タグ名が変更されただけなので、この HelloWorld クラスを再利用したいのです。
しかし、私は既存の HelloWorld クラスを使用し、以下のようにオブジェクト hw をマーシャリングしようとします
JaxbContext context = JAXBContext.newInstance(HelloWorld.class);
Marshaller m = conext.createMarshaller();
StringWriter writer = new StringWriter();
m.marshal(hw,writer);
System.out.println(writer.toString());
これは以下のように印刷されます
<helloworld>
<name>hello</name>
</helloworld>
しかし、私は必要です
<helloworld>
<name_1>hello</name_1> // Note <name> is changed to <name_1>
</helloworld>
この理由は、アンマーシャリング前の着信 xml とマーシャリング後の発信 xml が私の制御下にないためです。
これが説明することを願っています。