この記事では、xstream パッケージに基づいて XML ドキュメントを変換する Javabean メソッドを主に紹介し、具体的な例に基づいて XML ファイルを変換するための xstream パッケージの具体的な使用法を分析します。この記事では、Javabean が xstream パッケージに基づいて XML ドキュメントを変換するメソッドを実装する方法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
1. 必要な Jar パッケージ:xpp3_min.jar
xstream.jar
このサイト
ダウンロード アドレス。 これら 2 つの jar をプロジェクトに追加します
2. テスト用に 2 つの Javabean を追加します:Province と Cityclass Province
{
private String name;// 省名
private List<City> cities = new ArrayList<City>();
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public List<City> getCities()
{
return cities;
}
public void setCities(List<City> cities)
{
this.cities = cities;
}
public void addCity(City city)
{
cities.add(city);
}
}
class City
{
private String name;// 市名
private String description;// 描述
private String[] counties; // 该市的所有县
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String[] getCounties()
{
return this.counties;
}
public void setCounties(String[] countries)
{
this.counties = countries;
}
public String getDescription()
{
return description;
}
public void setDescription(String description)
{
this.description = description;
}
@Override
public String toString()
{
return "City [name=" + name + ", description=" + description + "]";
}
public City()
{
super();
}
public City(String name, String description)
{
super();
this.name = name;
this.description = description;
}
}
obj) を提供しますstring として返されます。 。 XStream#alias() メソッドは、生成された要素のタグ名を変更できます。タグ名が設定されていない場合は、Java.lang
.String などのクラスの文字列形式がタグ名として使用されます。 XStream#useAttribute
() メソッドは、Javabean の 属性 を XML 要素の属性に変換できます。 XStream#addImplicitCollection() メソッドは、List などの Javabean コレクション要素内の各要素を、これらの子要素の親要素として別の要素を生成せずに、直接子要素に変換できます。
XStream#addImplicitArray() メソッドは、コレクションが
arrayになる点を除いて、addImplicitCollection() と同じです。 以下はテストコードです:
package com.song.demo; import java.util.ArrayList; import java.util.List; import com.thoughtworks.xstream.XStream; public class BeanToXml { public static void main(String[] args) { // 创建一个JavaBean List<Province> proList = new ArrayList<Province>(); // 广东省 Province gdProvince = new Province(); gdProvince.setName("广东省"); City gzCity = new City("广州市", "广东省省会"); gzCity.setCounties(new String[]{"海珠区", "天河区", "白云区"}); gdProvince.addCity(gzCity); gdProvince.addCity(new City("韶关", "粤北城市")); // 北京市 Province bjProvince = new Province(); bjProvince.setName("北京市"); bjProvince.addCity(new City("东城区", "北京市东城区")); bjProvince.addCity(new City("西城区", "北京市西城区")); proList.add(gdProvince); proList.add(bjProvince); // 使用默认的方式生成xml // System.out.println(toXML1(proList)); // 处理JavaBean中的集合属性,直接生成子节点 System.out.println(toXml2(proList)); } private static String toXml2(Object obj) { XStream stream = new XStream(); // 更改List类型的元素的显示名称 stream.alias("中国", List.class); stream.alias("省份", Province.class); stream.alias("城市", City.class); stream.alias("区-县", String.class); // 把Province类中的name属性生成为元素的属性 stream.useAttributeFor(Province.class, "name"); // 把JavaBean中的集合元素直接变成子节点,面不另外再生成一个节点,该节点包含所有的子节点: // 如: /* * <cities> * <city /> * <city /> * </cities> * * 转换成: * <city /> * <city /> */ // 集合类型:cities为List类型 stream.addImplicitCollection(Province.class, "cities"); // 数组类型:counties为String[] 类型 stream.addImplicitArray(City.class, "counties"); return stream.toXML(obj); } }
<中国> <省份 name="广东省"> <城市> <name>广州市</name> <description>广东省省会</description> <区-县>海珠区</区-县> <区-县>天河区</区-县> <区-县>白云区</区-县> </城市> <城市> <name>韶关</name> <description>粤北城市</description> </城市> </省份> <省份 name="北京市"> <城市> <name>东城区</name> <description>北京市东城区</description> </城市> <城市> <name>西城区</name> <description>北京市西城区</description> </城市> </省份> </中国>
以上がxstreamパッケージに基づいてJavabeanで実装されたXML文書変換メソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。