1、2.1下载XStream的网站上面可以下载到各种版本。目前用最新版本是1.4.1,下载这个版本即可。2.2安装XStream的安装方法比较简单,将xstream-1.4.1.jar以及放置到类路径下面即可使用。如下图所示:3开始一个例子3.1新建一个空的java project工程通过eclipse向导新建一个Java Project工程,并将上面提的两个类添加到类路径下。工程如下:3.2编写Java后台类,代码如下新建一个cn的package,然后在cn下面新建两个Java类,Person和PhoneNumber,代码分别如下:Person.javapackage cn;public cla
2、ss Person private String firstname; private String lastname; private PhoneNumber phone; private PhoneNumber fax; public Person(String firstName, String lastName) this.firstname = firstName; this.lastname = lastName; public String getFirstname() return firstname; public void setFirstname(String first
3、name) this.firstname = firstname; public String getLastname() return lastname; public void setLastname(String lastname) this.lastname = lastname; public PhoneNumber getPhone() return phone; public void setPhone(PhoneNumber phone) this.phone = phone; public PhoneNumber getFax() return fax; public voi
4、d setFax(PhoneNumber fax) this.fax = fax;PhoneNumber.javapublic class PhoneNumber private int code; private String number; public PhoneNumber(int code, String number) this.code = code; this.number = number; public int getCode() return code; public void setCode(int code) public String getNumber() ret
5、urn number; public void setNumber(String number) 以上是两个很普通的Java对象。下面将写测试代码,将一个Person对象转成xml;然后再从xml转成Java对象。在cn包下面建立一个Main.java,代码如下:import com.thoughtworks.xstream.XStream;public class Main /* * param args */ public static void main(String args) XStream xstream = new XStream(); xstream.alias(person,
6、 Person.class);phonenumber, PhoneNumber.class); Person joe = new Person(Joe, Walnes); joe.setPhone(new PhoneNumber(123, 1234-456); joe.setFax(new PhoneNumber(123, 9999-999 String xml = xstream.toXML(joe); System.out.println(xml); Person newJoe = (Person)xstream.fromXML(xml); System.out.println(newJo
7、e.getFirstname();3.3运行测试类运行上面的Main.java类,输出结果如下:3.4代码解析下面主要对Main.java中的main方法进行详细地解析.XStream xstream = new XStream();直接实例化一个XStream对象,不用任何参数。这个时候XSteam内部会使用KXml2的解析工具。也就是上面添加的r包。如果不需要使用这个包的话,可以用JAXP的包等。例如:XStream xstream = new XStream(new DomDriver(); XStream xstream = new XStream(new StaxDriver();继
8、续下面的代码:xstream.alias(这两句表示对于xml中的每个结点,所映射的Java类。也就是person结点映射到了Person类;而phonenumber则映射到了PhoneNumber类。下面是实例化对象之类的,比较简单,我们跳过去不将。直接进入: String xml = xstream.toXML(joe);这个就是核心所在,即将一个java对象转成了xml。Person newJoe = (Person)xstream.fromXML(xml);这个也是核心所在,将一个xml转成java对象。4Alias机制XStream的Alias功能是很强大的,也是XStream开发中
9、不可或缺的一个重点功能,下面将通过一些实例来讲解如何应用Alias机制4.1默认情况,不使用Alias4.1.1新建相关的java对象类分别新建下面的类package com.thoughtworks.xstream;import java.util.ArrayList;import java.util.List;public class Blog private Author writer; private List entries = new ArrayList(); public Blog(Author writer) this.writer = writer; public void
10、add(Entry entry) entries.add(entry); public List getContent() return entries;public class Author private String name; public Author(String name) this.name = name; public String getName() return name;public class Entry private String title; private String description; public Entry(String title, Strin
11、g description) this.title = title; this.description = description;4.1.2建立测试代码如下: Blog teamBlog = new Blog(new Author(Guilherme Silveira teamBlog.add(new Entry(firstMy first blog entry.tutorial, Today we have developed a nice alias tutorial. Tell your friends! NOW! System.out.println(xstream.toXML(te
12、amBlog);运行这个主函数,输出结果如下: nameGuilherme Silveira/writerentriescom.thoughtworks.xstream.EntrytitlefirstdescriptionMy first blog entry./com.thoughtworks.xstream.Entrytutorial/com.thoughtworks.xstream.Blog4.1.3分析从这个例子看到,如果没有使用任何Alias的话,输出的XML中包含了类的全路径,包含package和class的名称。这一般来说,不是我们想要的结果,可能我们想要的结果是如下:bloge
13、ntry/entry/blog4.2对class进行alias修改上面的主函数,增加alias,如下:blog, Blog.class);author, Author.class);entry, Entry.class);运行,输出结果如下:4.3对field进行alias从4.2中可以看到,我们可以对Class进行alias。Xstream除了可以对Class进行alias外,还可以对field进行alias。修改上述的main函数,如下: xstream.aliasField(, Blog.class, writer运行上面结果,输出如下:author/author4.4隐含的Collec
14、tions像上述中的xml,可以看到这个结点: 假如我们不需要其中这个结点,也就是想把pany.xstream.Entry/pany.xstream.Entry/pany.xstream.Blog5Converter机制XStream提供了Converter,使我们在objectxml时,能对一些输入输出参数进行类型转换。5.1简单介绍从上面的xml中看到,blog中有author子结点,看起来比较啰嗦,可能我们想把author子节点作为blog的属性,如下:blog author=那么就需要用到属性转换功能。增加AuthorConverter.java,代码如下:import com.thoughtworks.xstream.converters.SingleValueConverter;class AuthorConverter implements SingleValueCon
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1