1.XStream的基本使用
package Test;
public class MyXStreamUse {
public static void main(String args[]){
XStream outstream = new XStream(new DomDriver());
Company com = new Company();
com.setName("ABC");
com.setDate("2012-2-3");
List<Person> persons = new ArrayList<Person>();
Person p1 = new Person("A",23);
Person p2 = new Person("B",24);
persons.add(p1);
persons.add(p2);
com.setEmployees(persons);
String xml = outstream.toXML(com);
System.out.println(xml);
Company com2 = (Company) outstream.formXML(xml);
}
}
public class Company {
public String name;
public String date;
public List<Person> employees;
...getter/setter/constructor
}
public class Person {
public String name;
public int age;
...getter/setter/constructor
}
输出结果:
<Test.Company>
<name>ABC</name>
<date>2012-2-3</date>
<employees>
<Test.Person>
<name>A</name>
<age>23</age>
</Test.Person>
<Test.Person>
<name>B</name>
<age>24</age>
</Test.Person>
</employees>
</Test.Company>
2.常用函数和相应注解
outstream.alias("Company", Company.class);
outstream.alias("Person", Person.class);//设置类的别名
outstream.useAttributeFor(Company.class, "name");//设置类中某一个字段作为类的一个属性,即xml文件中一个标签的属性
outstream.aliasField("employ-name", Person.class, "name");//为类中一个字段起一个别名
//outstream.addImplicitCollection(Company.class, "employees");//去掉注释,就没有<employees这个标签>
输出结果
<Company name="ABC">
<date>2012-2-3</date>
<employees>
<Person>
<employ-name>A</employ-name>
<age>23</age>
</Person>
<Person>
<employ-name>B</employ-name>
<age>24</age>
</Person>
</employees>
</Company>
相应注解
@XStreamAlias(别名)
@XStreamAsAttribute(作为标签属性)
@XStreamImplicit(itemFieldName="input-file")