XStream は、有名な思想に基づいたオープンソース プロジェクトです。その主な機能は、Java Bean と XML テキスト間の変換を提供することです。これは、これには含まれません。議論の範囲内の記事。 XSteamはJAVA1.5以降のアノテーションもサポートしています。 この時点では、JAVA BEAN にいくつかのアノテーションを追加するだけで済みます。もちろん、JAVA Bean の変更が許可されていない場合、XStream には非常に簡単な register メソッドも用意されています。いくつかの側面から詳しく説明します。 2. エイリアスの使用 4. 属性は変換に関与しません。 1. 基本的な変換 これは通常の JAVA Bean です:
package xstreamTest; public class Person { private String name; private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void setName(String name) { this.name = name; } public String getName() { return this.name; } }
XStream xstream = new XStream(); Person person = new Person(); person.setName("pli"); person.setAge(18); System.out.println(xstream.toXML(person));
<xstreamTest.Person> <name>pli</name> <age>18</age> </xstreamTest.Person>
package xstreamTest; @XStreamAlias("person") public class Person { private String name; private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void setName(String name) { this.name = name; } public String getName() { return this.name; } }
XStream xstream = new XStream(); xstream.autodetectAnnotations(true); Person person = new Person(); person.setName("pli"); person.setAge(18); System.out.println(xstream.toXML(person));
<person> <name>pli</name> <age>18</age> </person>
Java Bean の「age」属性を XML の person タグとして使用したい場合属性をやるべきですか?
別のアノテーション: @XStreamAsAttribute です。JAVA Bean は次のようになります:@XStreamAlias("person") public class Person { private String name; @XStreamAsAttribute private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void setName(String name) { this.name = name; } public String getName() { return this.name; } }
<person age="18"> <name>pli</name> </person>
@XStreamAlias("person") public class Person { private String name; @XStreamAsAttribute private int age; List<String> girlFriends; public List<String> getGirlFriends() { return girlFriends; } public void setGirlFriends(List<String> girlFriends) { this.girlFriends = girlFriends; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void setName(String name) { this.name = name; } public String getName() { return this.name; } }
<person age="18"> <name>pli</name> <girlFriends> <string>YuanYuanGao</string> <string>QiShu</string> <string>BoZhiZhang</string> </girlFriends> </person>
XStream は、リストのルート ノードを削除し、リストの名前を変更したいユーザーのニーズを満たすために、ここで @XStreamImplicit(itemFieldName=***) アノテーションを提供します。同様に、この例では、
@XStreamAlias("person") public class Person { private String name; @XStreamAsAttribute private int age; @XStreamImplicit(itemFieldName="girl") List<String> girlFriends; public List<String> getGirlFriends() { return girlFriends; } public void setGirlFriends(List<String> girlFriends) { this.girlFriends = girlFriends; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void setName(String name) { this.name = name; } public String getName() { return this.name; } }
結果は次のようになります:
<person age="18"> <name>pli</name> <girl>YuanYuanGao</girl> <girl>QiShu</girl> <girl>BoZhiZhang</girl> </person>
5. 属性を無視します
JAVA Bean にシリアル化したくない属性がある場合、XStream はこの要件を解決するためのアノテーションを提供します: @XStreamOmitField
たとえば、ガールフレンドのリストをシリアル化したくない
@XStreamAlias("person") public class Person { private String name; @XStreamAsAttribute private int age; @XStreamImplicit(itemFieldName="girl") @XStreamOmitField List<String> girlFriends; public List<String> getGirlFriends() { return girlFriends; } public void setGirlFriends(List<String> girlFriends) { this.girlFriends = girlFriends; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void setName(String name) { this.name = name; } public String getName() { return this.name; } }
以上がJAVAbeanとXMLを変換するための強力なツール - XStreamの詳細なコード説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。