XStream解析XML学习一

这个例子是参照官网上面的例子写的: http://xstream.codehaus.org/tutorial.html

1.首先构造想要序列化的类

Person.java:

[java]  view plain copy
  1. public class Person {  
  2.     private String firstname;  
  3.     private String lastname;  
  4.     private PhoneNumber phone;  
  5.     private PhoneNumber fax;  
  6.     // ... constructors and methods  
  7.     public Person(String firstname, String lastname) {  
  8.         super();  
  9.         this.firstname = firstname;  
  10.         this.lastname = lastname;  
  11.     }  
  12.     public void setPhone(PhoneNumber phoneNumber) {  
  13.         this.phone = phoneNumber;  
  14.     }  
  15.     public void setFax(PhoneNumber phoneNumber) {  
  16.         this.fax = phoneNumber;  
  17.     }  
  18.     @Override  
  19.     public String toString() {  
  20.         return "FirstName:" + firstname + ",LastName:" + lastname  
  21.                 + "phone.Code:" + phone.getCode() + "phone.Number:"  
  22.                 + phone.getNumber() + "fax:" + fax.getCode() + "fax.Number:"  
  23.                 + fax.getNumber();  
  24.     }  
  25. }  
 

PhoneNumber.java:

[java]  view plain copy
  1. public class PhoneNumber {  
  2.     private int code;  
  3.     private String number;  
  4.     // ... constructors and methods  
  5.     public PhoneNumber(int code, String number) {  
  6.         super();  
  7.         this.code = code;  
  8.         this.number = number;  
  9.     }  
  10.     public int getCode() {  
  11.         return code;  
  12.     }  
  13.     public String getNumber() {  
  14.         return number;  
  15.     }  
  16. }  
 

 

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 plain copy
  1. public class XStreamTest {  
  2.       
  3.     public static void main(String[] args) throws FileNotFoundException {  
  4.         //Initializing XStream  
  5.         XStream xStream=new XStream();  
  6.         xStream.alias("person", Person.class);  
  7.         xStream.alias("personnumber", PhoneNumber.class);  
  8.           
  9.         //Serializing an object to XML  
  10.         Person joe = new Person("Joe""Walnes");  
  11.         joe.setPhone(new PhoneNumber(123"1234-456"));  
  12.         joe.setFax(new PhoneNumber(123"9999-999"));  
  13.         FileOutputStream fileOutputStream=new FileOutputStream(new File("test.xml"));  
  14.         xStream.toXML(joe,fileOutputStream);  
  15.           
  16.         //Deserializing an object back from XM  
  17.         XStream xStream2=new XStream();  
  18.         FileInputStream fileInputStream=new FileInputStream(new File("test.xml"));  
  19.         Person person=(Person)xStream.fromXML(fileInputStream);  
  20.         System.out.println(person.toString());  
  21.           
  22.           
  23.           
  24.     }  
  25. }  
 

看一下运行的结果:

test.xml:

[xhtml]  view plain copy
  1. <person>  
  2.   <firstname>Joe</firstname>  
  3.   <lastname>Walnes</lastname>  
  4.   <phone>  
  5.     <code>123</code>  
  6.     <number>1234-456</number>  
  7.   </phone>  
  8.   <fax>  
  9.     <code>123</code>  
  10.     <number>9999-999</number>  
  11.   </fax>  
  12. </person>  
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值