xstream瞬间上手 obj转xml&xml转obj

关键字: alias,toxml,fromxml

http://xstream.codehaus.org
  这是一个关于XStream快速的介绍。快速浏览一下你会马上知道把一个对象转换到XML或是转换回来是多么的简单。你肯定会碰到下面的问题。

创建能够序列化的类

  这是一组简单的类。XStream能把这些类的实例转换到XML或是转换回来。

class Person {
private String firstName;
private String lastName;
private PhoneNumber phonex;
private PhoneNumber fax;
//构造函数或是其他方法
}

class PhoneNumber {
private int code;
private int number;
//构造函数或是其他方法
}
  注:注意到这些都是私有变量。XStream不关心变量的作用域。不需要getter或是setter方法。并且,XStream不限定需要默认的构造函数。

实例化XStream

使用XStream,简单实例化XStream类:

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

XStream xStream = new XStream(new DomDriver());//不需要XPP3库
注:这个类的简单设计是为了实现通用操作的。为了实现更复杂的操作你可以选择自己创建出不同方式。

现在,为了使用XStream来更精简的输出XML,你可以为自定义的类创建别名到XML的元素名的映射。这是使用XStream唯一需要的映射的,甚至这个都是可选的。

xStream.alians("person",Person.class);
注:这是可选的一步。没有这步XStream也可以很好的起作用,但是XML元素的名字就会包含每个类的全称(包括包名),这将会使生成XML稍大。

序列号一个对象到XML

让我们创建一个Person的实例并且填充它的变量域:

Person joe = new Person("Joe","Walnes");
joe.setPhone(new PhoneNumber(123,1234456));
joe.setFax(new PhoneNumber(123,9999999));
现在转换到XML,你要做的是简单的调用XStream:

String xml = xstream.toXML(joe);


生成的XML看上去像这样:

<Person>
  <firstName>Joe</firstName>
  <lastName>Walnes</lastName>
  <phonex>
    <code>123</code>
    <number>1234456</number>
  </phonex>
  <fax>
    <code>123</code>
    <number>9999999</number>
  </fax>
</Person>

非常简单,像创建XML一样。

从XML反序列化一个对象

从XML重新构造一个对象:

Person newJoe = (Person)xStream.fromXML(xml);

XStream是多么的简单啊!

总结:

使用xStream.alias(String elementName, Class cls)为任何一个自定义类创建到类到元素的别名;

使用xStream.toXML(Object obj)转换对象到XML;

使用xStream.fromXML(String xml)转换XML到对象;



>>>完整应用示例:::
public class Test1 {

public static void main(String args[]){
XStream xStream = new XStream();
Person joe = new Person("Joe","Walnes");
joe.setPhonex(new PhoneNumber(123,1234456));
joe.setFax(new PhoneNumber(123,9999999));

// xStream.alias("person",Person.class);
String xml = xStream.toXML(joe);
System.out.println(xml);

Person newJoe = (Person)xStream.fromXML(xml);
String xml1 = xStream.toXML(newJoe);
System.out.println(xml1);
}
}
class Person {

private String firstName;
private String lastName;
private PhoneNumber phonex;
private PhoneNumber fax;
//构造函数或是其他方法
public Person(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public PhoneNumber getPhonex() {
return phonex;
}
public void setPhonex(PhoneNumber phonex) {
this.phonex = phonex;
}
public PhoneNumber getFax() {
return fax;
}
public void setFax(PhoneNumber fax) {
this.fax = fax;
}
}

class PhoneNumber {

private int code;
private int number;
public PhoneNumber(int code, int number) {
this.code = code;
this.number = number;
}

}

你可能感兴趣的:(xml,浏览器)