XStream的使用说明
往期记录
XStream的序列化和重命名
1. 为包重命名Xstream.aliasPackage()
package com.vincient.test.xstreamDemo;
import com.thoughtworks.xstream.XStream;
/**
* @Author: Vincient
* @Description:
* @Date: 2018/十一月/05
**/
public class Test4 {
public static void main(String[] args) {
Person bean = new Person("张三", 19);
XStream xStream = new XStream();
xStream.aliasPackage("test", "com.vincient.test.xstreamDemo");
String xml = xStream.toXML(bean);
System.out.println(xml);
bean = (Person) xStream.fromXML(xml);
System.out.println(bean);
}
}
运行结果
<test.Person>
<name>张三</name>
<age>19</age>
</test.Person>
Person{name='张三', age=19}
2. 为类重命名:Xstream.alias()
package com.vincient.test.xstreamDemo;
import com.thoughtworks.xstream.XStream;
/**
* @Author: Vincient
* @Description:
* @Date: 2018/十一月/05
**/
public class Test5 {
public static void main(String[] args) {
Person bean = new Person("张三", 19);
XStream xStream = new XStream();
xStream.alias("人", Person.class);
String xml = xStream.toXML(bean);
System.out.println(xml);
bean = (Person) xStream.fromXML(xml);
System.out.println(bean);
}
}
运行结果
<人>
<name>张三</name>
<age>19</age>
</人>
Person{name='张三', age=19}
3. 为字段重命名:Xstream.aliasField()
package com.vincient.test.xstreamDemo;
import com.thoughtworks.xstream.XStream;
/**
* @Author: Vincient
* @Description:
* @Date: 2018/十一月/05
**/
public class Test6 {
public static void main(String[] args) {
Person bean = new Person("张三", 19);
XStream xStream = new XStream();
xStream.aliasField("姓名", Person.class, "name");
xStream.aliasField("年龄", Person.class, "age");
String xml = xStream.toXML(bean);
System.out.println(xml);
bean = (Person) xStream.fromXML(xml);
System.out.println(bean);
}
}
运行结果
<com.vincient.test.xstreamDemo.Person>
<姓名>张三</姓名>
<年龄>19</年龄>
</com.vincient.test.xstreamDemo.Person>
Person{name='张三', age=19}
4.省略集合根节点:Xstream.addImplicitCollection()
- Person1类
package com.vincient.test.xstreamDemo;
import java.util.Arrays;
import java.util.List;
/**
* @Author: Vincient
* @Description:
* @Date: 2018/十一月/05
**/
public class Person1 {
private String name;
private int age;
private List friends;
public Person1(String name, int age, List friends) {
this.name = name;
this.age = age;
this.friends = friends;
}
public Person1() {
super();
}
@Override
public String toString() {
return "Person1{" +
"name='" + name + '\'' +
", age=" + age +
", friends=" + friends +
'}';
}
}
- Test类
package com.vincient.test.xstreamDemo;
import com.thoughtworks.xstream.XStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @Author: Vincient
* @Description:
* @Date: 2018/十一月/05
**/
public class Test7 {
public static void main(String[] args) {
List<String> friends = new ArrayList<>();
friends.add("李四");
friends.add("王五");
friends.add("赵六");
Person1 bean = new Person1("张三", 19, friends);
XStream xStream = new XStream();
xStream.addImplicitCollection(Person1.class, "friends");
String xml = xStream.toXML(bean);
System.out.println(xml);
bean = (Person1) xStream.fromXML(xml);
System.out.println(bean);
System.out.println(Arrays.asList());
}
}
运行结果
<com.vincient.test.xstreamDemo.Person1>
<name>张三</name>
<age>19</age>
<string>李四</string>
<string>王五</string>
<string>赵六</string>
</com.vincient.test.xstreamDemo.Person1>
Person1{name='张三', age=19, friends=[李四, 王五, 赵六]}
5.把字段节点设置成属性:Xstream.useAttributeFor()
package com.vincient.test.xstreamDemo;
import com.thoughtworks.xstream.XStream;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: Vincient
* @Description:
* @Date: 2018/十一月/05
**/
public class Test8 {
public static void main(String[] args) {
List<String> friends = new ArrayList<>();
friends.add("李四");
friends.add("王五");
friends.add("赵六");
Person1 bean = new Person1("张三", 19, friends);
XStream xStream = new XStream();
xStream.useAttributeFor(Person1.class, "name");
String xml = xStream.toXML(bean);
System.out.println(xml);
bean = (Person1) xStream.fromXML(xml);
System.out.println(bean);
}
}
运行结果
<com.vincient.test.xstreamDemo.Person1 name="张三">
<age>19</age>
<friends>
<string>李四</string>
<string>王五</string>
<string>赵六</string>
</friends>
</com.vincient.test.xstreamDemo.Person1>
Person1{name='张三', age=19, friends=[李四, 王五, 赵六]}
6.隐藏字段:xstream.omitField()
package com.vincient.test.xstreamDemo;
import com.thoughtworks.xstream.XStream;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: Vincient
* @Description:
* @Date: 2018/十一月/05
**/
public class Test9 {
public static void main(String[] args) {
List<String> friends = new ArrayList<>();
friends.add("李四");
friends.add("王五");
friends.add("赵六");
Person1 bean = new Person1("张三", 19, friends);
XStream xStream = new XStream();
xStream.omitField(Person1.class, "friends");
String xml = xStream.toXML(bean);
System.out.println(xml);
bean = (Person1) xStream.fromXML(xml);
System.out.println(bean);
}
}
运行结果
<com.vincient.test.xstreamDemo.Person1>
<name>张三</name>
<age>19</age>
</com.vincient.test.xstreamDemo.Person1>
Person1{name='张三', age=19, friends=null}
本文参考:
【1】XStream使用详解