您的位置:首页 > 其它

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: