1. 初始化要轉爲 XML 的數據:
// 生成第一條地址數據;
Address address1 = new Address(1, "地址一", "廣東省XX市", "XX公司");
// 生成第二條地址數據;
Address address2 = new Address(2, "地址二", "廣東省XX市", "家");
List<Address> addresses = new ArrayList<Address>();
// 將生成的地址數據放到 List 中;
addresses.add(address1);
addresses.add(address2);
// 生成 People 對象並制定相應數據;
People people = new People(1, "Shawearn", 1, addresses);
2. Java 對象轉化爲 XML 格式的字符串:
// 新建 XStream 對象;
XStream xStream = new XStream();
// 將 People 類的示例轉化爲 XML 格式的字符串;
String xmlStr = xStream.toXML(people);
// 打印輸出轉化後的 XML 字符串;
System.out.println(xmlStr);
運行結果
<com.shawearn.sitmap.People>
<id>1</id>
<name>Shawearn</name>
<age>1</age>
<addresses>
<com.shawearn.xml.Address>
<id>1</id>
<name>地址一</name>
<address>廣東省XX市</address>
<desc>XX公司</desc>
</com.shawearn.xml.Address>
<com.shawearn.xml.Address>
<id>2</id>
<name>地址二</name>
<address>廣東省XX市</address>
<desc>家</desc>
</com.shawearn.xml.Address>
</addresses>
</com.shawearn.xml.People>
我們會發現節點名字使用了類名,此時可以用 alias 指定 Java 類對應的節點名該方法需要在調用 toXML() 方法之前使用:/**
* Alias a Class to a shorter name to be used in XML elements.
*
* @param name Short name
* @param type Type to be aliased
* @throws InitializationException if no {@link ClassAliasingMapper} is available
*/
public void alias(String name, Class type);
// 指定 People 類對應的節點名爲 People;
xStream.alias(People.class.getSimpleName(), People.class);
// 指定 Address 類對應的節點名爲 address;
xStream.alias("address", Address.class);
指定別名後的運行結果:
<People>
<id>1</id>
<name>Shawearn</name>
<age>1</age>
<addresses>
<address>
<id>1</id>
<name>地址一</name>
<address>廣東省XX市</address>
<desc>XX公司</desc>
</address>
<address>
<id>2</id>
<name>地址二</name>
<address>廣東省XX市</address>
<desc>家</desc>
</address>
</addresses>
</People>
3. XML 轉化爲 Java 對象;
// 新建 XStream 對象;
XStream s = new XStream();
// 指定 People 類對應的節點名爲 People;
s.alias(People.class.getSimpleName(), People.class);
// 指定 Address 類對應的節點名爲 address;
s.alias("address", Address.class);
// 將 XML 字符串轉化爲 People 對象;
People people2 = (People) s.fromXML(xmlStr);
// 打印輸出轉化後的 People 對象;
System.out.println(people2.toString());
運行結果:
People [id=1, name=Shawearn, age=1, addresses=[Address [id=1, name=地址一, address=廣東省XX市, desc=XX公司], Address [id=2, name=地址二, address=廣東省XX市, desc=家]]]