微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

XStream解析XML学习一

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

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

Person.java:

[java] view plain copy
  1. publicclassPerson{
  2. privateStringfirstname;
  3. privateStringlastname;
  4. privatePhoneNumberphone;
  5. privatePhoneNumberfax;
  6. //...constructorsandmethods
  7. publicPerson(Stringfirstname,Stringlastname){
  8. super();
  9. this.firstname=firstname;
  10. this.lastname=lastname;
  11. }
  12. voidsetPhone(PhoneNumberphoneNumber){
  13. this.phone=phoneNumber;
  14. }
  15. voidsetFax(PhoneNumberphoneNumber){
  16. this.fax=phoneNumber;
  17. @Override
  18. publicStringtoString(){
  19. return"FirstName:"+firstname+",LastName:"+lastname
  20. +"phone.Code:"+phone.getCode()+"phone.Number:"
  21. +phone.getNumber()+"fax:"+fax.getCode()+"fax.Number:"
  22. +fax.getNumber();
  23. }

PhoneNumber.java:

copy
    classPhoneNumber{
  1. privateintcode;
  2. privateStringnumber;
  3. publicPhoneNumber(intcode,Stringnumber){
  4. this.code=code;
  5. this.number=number;
  6. intgetCode(){
  7. returncode;
  8. publicStringgetNumber(){
  9. returnnumber;
  10. }

2.初始化XStream并序列化和反序列化。

StreamxStream=newXStream();

你需要xstream-[version].jar and xpp3-[version].jar在classpath中。XPP3是一个非常快的XML拉式转换器工具。如果你不想包含这个依赖,你可以使用标准的JAXP DOM转换器来代替。

XStream xStream = new XStream(new DomDriver());//不需要XPP3库

这里要特别说明的是XStream xStream2=new XStream();这样会出错,使用原来的

copy
    classXStreamTest{
  1. staticvoidmain(String[]args)throwsFileNotFoundException{
  2. //InitializingXStream
  3. XStreamxStream=newXStream();
  4. xStream.alias("person",Person.class);
  5. xStream.alias("personnumber",PhoneNumber.class);
  6. //SerializinganobjecttoXML
  7. Personjoe=newPerson("Joe","Walnes");
  8. joe.setPhone(newPhoneNumber(123,"1234-456"));
  9. joe.setFax("9999-999"));
  10. FileOutputStreamfileOutputStream=newFileOutputStream(newFile("test.xml"));
  11. xStream.toXML(joe,fileOutputStream);
  12. //DeserializinganobjectbackfromXM
  13. XStreamxStream2= FileInputStreamfileInputStream=newFileInputStream(newFile("test.xml"));
  14. Personperson=(Person)xStream.fromXML(fileInputStream);
  15. System.out.println(person.toString());
  16. }

看一下运行的结果:

test.xml:

[xhtml] copy
    <person>
  1. firstname>Joe</>
  2. lastname>Walnesphonecode>123number>1234-456fax>9999-999>

原文地址:https://www.jb51.cc/xml/299031.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。