XStream使用文档Word文档下载推荐.docx

上传人:b****6 文档编号:21565928 上传时间:2023-01-31 格式:DOCX 页数:28 大小:70.13KB
下载 相关 举报
XStream使用文档Word文档下载推荐.docx_第1页
第1页 / 共28页
XStream使用文档Word文档下载推荐.docx_第2页
第2页 / 共28页
XStream使用文档Word文档下载推荐.docx_第3页
第3页 / 共28页
XStream使用文档Word文档下载推荐.docx_第4页
第4页 / 共28页
XStream使用文档Word文档下载推荐.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

XStream使用文档Word文档下载推荐.docx

《XStream使用文档Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《XStream使用文档Word文档下载推荐.docx(28页珍藏版)》请在冰豆网上搜索。

XStream使用文档Word文档下载推荐.docx

2.1下载

XStream的网站上面可以下载到各种版本。

目前用最新版本是1.4.1,下载这个版本即可。

2.2安装

XStream的安装方法比较简单,将xstream-1.4.1.jar以及放置到类路径下面即可使用。

如下图所示:

3开始一个例子

3.1新建一个空的javaproject工程

通过eclipse向导新建一个JavaProject工程,并将上面提的两个类添加到类路径下。

工程如下:

3.2编写Java后台类,代码如下

新建一个cn的package,然后在cn下面新建两个Java类,Person和PhoneNumber,代码分别如下:

Person.java

packagecn;

publicclassPerson{

privateStringfirstname;

privateStringlastname;

privatePhoneNumberphone;

privatePhoneNumberfax;

publicPerson(StringfirstName,StringlastName){

this.firstname=firstName;

this.lastname=lastName;

}

publicStringgetFirstname(){

returnfirstname;

publicvoidsetFirstname(Stringfirstname){

this.firstname=firstname;

publicStringgetLastname(){

returnlastname;

publicvoidsetLastname(Stringlastname){

this.lastname=lastname;

publicPhoneNumbergetPhone(){

returnphone;

publicvoidsetPhone(PhoneNumberphone){

this.phone=phone;

publicPhoneNumbergetFax(){

returnfax;

publicvoidsetFax(PhoneNumberfax){

this.fax=fax;

}

PhoneNumber.java

publicclassPhoneNumber{

privateintcode;

privateStringnumber;

publicPhoneNumber(intcode,Stringnumber){

this.code=code;

this.number=number;

publicintgetCode(){

returncode;

publicvoidsetCode(intcode){

publicStringgetNumber(){

returnnumber;

publicvoidsetNumber(Stringnumber){

以上是两个很普通的Java对象。

下面将写测试代码,将一个Person对象转成xml;

然后再从xml转成Java对象。

在cn包下面建立一个Main.java,代码如下:

importcom.thoughtworks.xstream.XStream;

publicclassMain{

/**

*@paramargs

*/

publicstaticvoidmain(String[]args){

XStreamxstream=newXStream();

xstream.alias("

person"

Person.class);

phonenumber"

PhoneNumber.class);

Personjoe=newPerson("

Joe"

"

Walnes"

);

joe.setPhone(newPhoneNumber(123,"

1234-456"

));

joe.setFax(newPhoneNumber(123,"

9999-999"

Stringxml=xstream.toXML(joe);

System.out.println(xml);

PersonnewJoe=(Person)xstream.fromXML(xml);

System.out.println(newJoe.getFirstname());

3.3运行测试类

运行上面的Main.java类,输出结果如下:

3.4代码解析

下面主要对Main.java中的main方法进行详细地解析.

XStreamxstream=newXStream();

直接实例化一个XStream对象,不用任何参数。

这个时候XSteam内部会使用KXml2的解析工具。

也就是上面添加的r包。

如果不需要使用这个包的话,可以用JAXP的包等。

例如:

XStreamxstream=newXStream(newDomDriver());

XStreamxstream=newXStream(newStaxDriver());

继续下面的代码:

xstream.alias("

这两句表示对于xml中的每个结点,所映射的Java类。

也就是person结点映射到了Person类;

而phonenumber则映射到了PhoneNumber类。

下面是实例化对象之类的,比较简单,我们跳过去不将。

直接进入:

Stringxml=xstream.toXML(joe);

这个就是核心所在,即将一个java对象转成了xml。

PersonnewJoe=(Person)xstream.fromXML(xml);

这个也是核心所在,将一个xml转成java对象。

4Alias机制

XStream的Alias功能是很强大的,也是XStream开发中不可或缺的一个重点功能,下面将通过一些实例来讲解如何应用Alias机制

4.1默认情况,不使用Alias

4.1.1新建相关的java对象类

分别新建下面的类

packagecom.thoughtworks.xstream;

importjava.util.ArrayList;

importjava.util.List;

publicclassBlog{

privateAuthorwriter;

privateListentries=newArrayList();

publicBlog(Authorwriter){

this.writer=writer;

publicvoidadd(Entryentry){

entries.add(entry);

publicListgetContent(){

returnentries;

publicclassAuthor{

privateStringname;

publicAuthor(Stringname){

this.name=name;

publicStringgetName(){

returnname;

publicclassEntry{

privateStringtitle;

privateStringdescription;

publicEntry(Stringtitle,Stringdescription){

this.title=title;

this.description=description;

4.1.2建立测试代码

如下:

BlogteamBlog=newBlog(newAuthor("

GuilhermeSilveira"

teamBlog.add(newEntry("

first"

Myfirstblogentry."

tutorial"

"

Todaywehavedevelopedanicealiastutorial.Tellyourfriends!

NOW!

"

System.out.println(xstream.toXML(teamBlog));

运行这个主函数,输出结果如下:

<

com.thoughtworks.xstream.Blog>

<

writer>

name>

GuilhermeSilveira<

/name>

/writer>

entries>

com.thoughtworks.xstream.Entry>

title>

first<

/title>

description>

Myfirstblogentry.<

/description>

/com.thoughtworks.xstream.Entry>

tutorial<

/entries>

/com.thoughtworks.xstream.Blog>

4.1.3分析

从这个例子看到,如果没有使用任何Alias的话,输出的XML中包含了类的全路径,包含package和class的名称。

这一般来说,不是我们想要的结果,可能我们想要的结果是如下:

blog>

entry>

/entry>

/blog>

4.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>

/author>

4.4隐含的Collections

像上述中的xml,可以看到这个结点:

……

假如我们不需要其中这个结点,也就是想把<

结点去除,那么就可以使用其implicitcollection功能。

修改main函数,如下:

xstream.addImplicitCollection(Blog.class,"

entries"

运行上面函数,输出结果如下:

4.5对package进行alias

XStream另外一个功能是对package进行alias,虽然这个功能比较少用。

xstream.aliasPackage("

pany"

com.thoughtworks"

运行以上结果,输出如下:

pany.xstream.Blog>

pany.xstream.Entry>

/pany.xstream.Entry>

/pany.xstream.Blog>

5Converter机制

XStream提供了Converter,使我们在object<

->

xml时,能对一些输入输出参数进行类型转换。

5.1简单介绍

从上面的xml中看到,blog中有author子结点,看起来比较啰嗦,可能我们想把author子节点作为blog的属性,如下:

blogauthor="

>

那么就需要用到属性转换功能。

增加AuthorConverter.java,代码如下:

importcom.thoughtworks.xstream.converters.SingleValueConverter;

classAuthorConverterimplementsSingleValueCon

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1