XStream解析XML学习一
2014-03-17 14:25
489 查看
这个例子是参照官网上面的例子写的:http://xstream.codehaus.org/tutorial.html
1.首先构造想要序列化的类
Person.java:
[java] view
plaincopy
public class Person {
private String firstname;
private String lastname;
private PhoneNumber phone;
private PhoneNumber fax;
// ... constructors and methods
public Person(String firstname, String lastname) {
super();
this.firstname = firstname;
this.lastname = lastname;
}
public void setPhone(PhoneNumber phoneNumber) {
this.phone = phoneNumber;
}
public void setFax(PhoneNumber phoneNumber) {
this.fax = phoneNumber;
}
@Override
public String toString() {
return "FirstName:" + firstname + ",LastName:" + lastname
+ "phone.Code:" + phone.getCode() + "phone.Number:"
+ phone.getNumber() + "fax:" + fax.getCode() + "fax.Number:"
+ fax.getNumber();
}
}
PhoneNumber.java:
[java] view
plaincopy
public class PhoneNumber {
private int code;
private String number;
// ... constructors and methods
public PhoneNumber(int code, String number) {
super();
this.code = code;
this.number = number;
}
public int getCode() {
return code;
}
public String getNumber() {
return number;
}
}
2.初始化XStream并序列化和反序列化。
Stream xStream = new XStream();
你需要xstream-[version].jar and xpp3-[version].jar在classpath中。XPP3是一个非常快的XML拉式转换器工具。如果你不想包含这个依赖,你可以使用标准的JAXP DOM转换器来代替。
XStream xStream = new XStream(new DomDriver());//不需要XPP3库
这里要特别说明的是XStream xStream2=new XStream();这样会出错,使用原来的
[java] view
plaincopy
public class XStreamTest {
public static void main(String[] args) throws FileNotFoundException {
//Initializing XStream
XStream xStream=new XStream();
xStream.alias("person", Person.class);
xStream.alias("personnumber", PhoneNumber.class);
//Serializing an object to XML
Person joe = new Person("Joe", "Walnes");
joe.setPhone(new PhoneNumber(123, "1234-456"));
joe.setFax(new PhoneNumber(123, "9999-999"));
FileOutputStream fileOutputStream=new FileOutputStream(new File("test.xml"));
xStream.toXML(joe,fileOutputStream);
//Deserializing an object back from XM
XStream xStream2=new XStream();
FileInputStream fileInputStream=new FileInputStream(new File("test.xml"));
Person person=(Person)xStream.fromXML(fileInputStream);
System.out.println(person.toString());
}
}
看一下运行的结果:
test.xml:
[xhtml] view
plaincopy
<person>
<firstname>Joe</firstname>
<lastname>Walnes</lastname>
<phone>
<code>123</code>
<number>1234-456</number>
</phone>
<fax>
<code>123</code>
<number>9999-999</number>
</fax>
</person>
1.首先构造想要序列化的类
Person.java:
[java] view
plaincopy
public class Person {
private String firstname;
private String lastname;
private PhoneNumber phone;
private PhoneNumber fax;
// ... constructors and methods
public Person(String firstname, String lastname) {
super();
this.firstname = firstname;
this.lastname = lastname;
}
public void setPhone(PhoneNumber phoneNumber) {
this.phone = phoneNumber;
}
public void setFax(PhoneNumber phoneNumber) {
this.fax = phoneNumber;
}
@Override
public String toString() {
return "FirstName:" + firstname + ",LastName:" + lastname
+ "phone.Code:" + phone.getCode() + "phone.Number:"
+ phone.getNumber() + "fax:" + fax.getCode() + "fax.Number:"
+ fax.getNumber();
}
}
PhoneNumber.java:
[java] view
plaincopy
public class PhoneNumber {
private int code;
private String number;
// ... constructors and methods
public PhoneNumber(int code, String number) {
super();
this.code = code;
this.number = number;
}
public int getCode() {
return code;
}
public String getNumber() {
return number;
}
}
2.初始化XStream并序列化和反序列化。
Stream xStream = new XStream();
你需要xstream-[version].jar and xpp3-[version].jar在classpath中。XPP3是一个非常快的XML拉式转换器工具。如果你不想包含这个依赖,你可以使用标准的JAXP DOM转换器来代替。
XStream xStream = new XStream(new DomDriver());//不需要XPP3库
这里要特别说明的是XStream xStream2=new XStream();这样会出错,使用原来的
[java] view
plaincopy
public class XStreamTest {
public static void main(String[] args) throws FileNotFoundException {
//Initializing XStream
XStream xStream=new XStream();
xStream.alias("person", Person.class);
xStream.alias("personnumber", PhoneNumber.class);
//Serializing an object to XML
Person joe = new Person("Joe", "Walnes");
joe.setPhone(new PhoneNumber(123, "1234-456"));
joe.setFax(new PhoneNumber(123, "9999-999"));
FileOutputStream fileOutputStream=new FileOutputStream(new File("test.xml"));
xStream.toXML(joe,fileOutputStream);
//Deserializing an object back from XM
XStream xStream2=new XStream();
FileInputStream fileInputStream=new FileInputStream(new File("test.xml"));
Person person=(Person)xStream.fromXML(fileInputStream);
System.out.println(person.toString());
}
}
看一下运行的结果:
test.xml:
[xhtml] view
plaincopy
<person>
<firstname>Joe</firstname>
<lastname>Walnes</lastname>
<phone>
<code>123</code>
<number>1234-456</number>
</phone>
<fax>
<code>123</code>
<number>9999-999</number>
</fax>
</person>
相关文章推荐
- XStream解析XML学习一
- java解析xml之xstream学习
- XML解析和JSON解析学习
- Android Animation学习(三) ApiDemos解析:XML动画文件的使用
- android中解析复杂xml(XStream简单使用)
- Dom4j解析XML简单应用,XStream实现Java、XML转换
- Android XML解析学习——Pull方式
- Java学习笔记(2)----Web项目中解析XML文件
- struts2 学习笔记之 struts.xml 配置解析
- XML轻松学习手册(5)XML实例解析
- xstream解析xml中有很多重复的field的xml
- XML学习04-Java中DOM方式解析XML文件
- Keras版Faster-RCNN代码学习(loss,xml解析)3
- webService xml解析 android测试 linux 学习-----博客大搜集
- iOS学习之解析XML数据
- ios学习记录 day39 UI15高级编程 XML , JSON数据结构解析
- 程序员带你学习安卓开发-XML文档的创建与解析
- 《老罗Android》学习之xml解析
- XML四种解析学习记录
- COCOS2d-x学习笔记(文本、XML读取TiXmlDocument解析)