使用XStream,需要下载XStream.jar包
为了使用XStream,需要对其初始化。初始化方法有两种
XStream xstream = new XStream();
这种方式的初始化需要xpp3-[version].jar的支持。xpp是一个快速解析XML文件的解析器。假如不想包括这个依赖jar包,你可以使用标准的JAXP DOM来解析它。如下:
XStream xstream = new XStream(new DomDriver()); // 不需要 XPP3.jar
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider;
public class ToXML_XStream {
public static void main(String[] args) {
ToXML_XStream.write();
ToXML_XStream.read();
}
public static void write() {
XStream sm = new XStream();
User t = new User();
t.setName("FuQiuLian");
t.setGender("female");
t.setAge(25);
t.setPhone("13568522563");
try {
OutputStream out = new FileOutputStream(new File("XStream_1.xml"));
OutputStreamWriter writer = new OutputStreamWriter(out, Charset
.forName("GBK"));
writer.write("/n");
sm.toXML(t, writer);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void read() {
XStream sm = new XStream(new PureJavaReflectionProvider());
try {
InputStream in = new FileInputStream(new File("XStream_1.xml"));
InputStreamReader reader = new InputStreamReader(in, Charset
.forName("GBK"));
User t = (User) sm.fromXML(in);
System.out.println(t.getName());
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public class User {
// 学生姓名
private String name;
// 学生性别
private String gender;
// 学生年龄
private int age;
// 学生电话号码
private String phone;
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("姓名:").append(this.name).append("; ");
sb.append("性别:").append(gender).append("; ");
sb.append("年龄:").append(age).append("; ");
sb.append("电话:").append(phone);
return sb.toString();
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
- XStream 的编码:
本身并没有实现编码,必须依靠java.io.Writer来实现输出编码的转换。参考上例代码 - XStream 的常用方法
xstream.omitField(MyTest.class, "name"); 定义某一个属性的值不进行xml序列化。
xstream.alias("cat", Cat.class);
xstream.aliasField("age", Cat.class, "mAge"); 对某一个类和类的属性进行别名定义。
xstream.useAttributeFor(String.class); 对所有String类型的字段定义为属性tag显示
xstream.useAttributeFor("name".String.class); 对所有String类型的字段名成为name 定义为属性tag显示