`
ihuashao
  • 浏览: 4721149 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

利用xstream处理java中的集合类

阅读更多
利用xstream处理java中的集合类
越来越发现xstream的好用了,在处理很多麻烦事情时可以很简单的搞定,比如本来需要几个字段来保存的服务器配置信息,现在只需要写一个pojo表示服务器的config information,然后利用xstream将它变为xml,用一个字段就可以保存在数据库中,方便而且高效。
但是在工作中,发现有时候pojo中需要用到java中的集合类,如ArrayList时,稍微有那么一点麻烦,今天特总结了一下,有不对之处希望大家批评指正。
一.pojo中使用数组
1.先写一个表示通许录的pojo
packagechb.xml;

/***//**通讯录
*
@authorchb
*
*/

publicclassAdressList...{
Stringusername;
//用户名
String[]telphone;//联系方式
publicString[]getTelphone()...{
returntelphone;
}

publicvoidsetTelphone(String[]telphone)...{
this.telphone=telphone;
}

publicStringgetUsername()...{
returnusername;
}

publicvoidsetUsername(Stringusername)...{
this.username=username;
}

}
2.利用xstream将一个AdressList对象转化成xml
XStreamxstream=newXStream(newDomDriver());
AdressListadressList
=newAdressList();
adressList.setUsername(
"chb");
String[]tel
=...{"13811071xxx","0391-6792xxx"};
adressList.setTelphone(tel);
Stringobj_xml
=xstream.toXML(adressList);
System.out.println(obj_xml);
3.输出结果为:
<chb.xml.AdressList>
<username>chb</username>
<telphone>
<string>13811071xxx</string>
<string>0391-6792xxx</string>
</telphone>
</chb.xml.AdressList>
4.如果觉得上面这段xml的root节点<
chb.xml.AdressList>不爽的话,可以利用xstream的annotations来搞定。只需要改动两个地方即可:

packagechb.xml;

importcom.thoughtworks.xstream.annotations.XStreamAlias;

/***//**通讯录
*
@authorchb
*
*/

@XStreamAlias(
"adressList")
publicclassAdressList...{
Stringusername;
//用户名
String[]telphone;//联系方式
然后在调用时更改如下:
XStreamxstream=newXStream(newDomDriver());
Annotations.configureAliases(xstream,AdressList.
class);
AdressListadressList
=newAdressList();
adressList.setUsername(
"chb");
String[]tel
=...{"13811071xxx","0391-6792xxx"};
adressList.setTelphone(tel);
Stringobj_xml
=xstream.toXML(adressList);
System.out.println(obj_xml);
最后输出结果为:
<adressList>
<username>chb</username>
<telphone>
<string>13811071xxx</string>
<string>0391-6792xxx</string>
</telphone>
</adressList>
关于xstream的
Annotations用法可以参考:http://xstream.codehaus.org/annotations-tutorial.html
二.pojo中使用ArrayList,ArrayList中装着另外的一个pojo
1.创建一个pojo
packagechb.xml;

importjava.util.ArrayList;

importcom.thoughtworks.xstream.annotations.XStreamAlias;

/***//**通讯录
*
@authorchb
*
*/

@XStreamAlias(
"adressList")
publicclassAdressList...{
Stringusername;
//用户名
ArrayList<EmailAdress>emailList;//电子邮件
publicStringgetUsername()...{
returnusername;
}

publicvoidsetUsername(Stringusername)...{
this.username=username;
}

publicArrayList<EmailAdress>getEmailList()...{
returnemailList;
}

publicvoidsetEmailList(ArrayList<EmailAdress>emailList)...{
this.emailList=emailList;
}

}

2.emailList变量指向的EmailAdress对象为:
packagechb.xml;

importcom.thoughtworks.xstream.annotations.XStreamAlias;

/***//**有点类似于javax.mail.internet.InternetAddress
*
*如:chb<hbcui1984@163.com>
*
*
@authorchb
*
*/

@XStreamAlias(
"email")
publicclassEmailAdress...{

Stringperson;
//person

Stringadress;
//Adress

publicStringgetAdress()...{
returnadress;
}

publicvoidsetAdress(Stringadress)...{
this.adress=adress;
}

publicStringgetPerson()...{
returnperson;
}

publicvoidsetPerson(Stringperson)...{
this.person=person;
}

}

3.将一个
AdressList对象转化为对应的pojo
XStreamxstream=newXStream(newDomDriver());
Annotations.configureAliases(xstream,AdressList.
class);
Annotations.configureAliases(xstream,EmailAdress.
class);
AdressListadressList
=newAdressList();
adressList.setUsername(
"chb");

ArrayList
<EmailAdress>emailList=newArrayList<EmailAdress>();
for(inti=1;i<4;i++)...{
EmailAdressemail
=newEmailAdress();
email.setPerson(
"user"+i);
email.setAdress(
"user"+i+"@163.com");
emailList.add(email);
}

adressList.setEmailList(emailList);
Stringobj_xml
=xstream.toXML(adressList);
System.out.println(obj_xml);
4.输出结果为:
<adressList>
<username>chb</username>
<emailList>
<email>
<person>user1</person>
<adress>user1@163.com</adress>
</email>
<email>
<person>user2</person>
<adress>user2@163.com</adress>
</email>
<email>
<person>user3</person>
<adress>user3@163.com</adress>
</email>
</emailList>
</adressList>

三.用其他集合类的方法类似,这里就不举例了。

分享到:
评论

相关推荐

    Xstream_java对象和xml的互相转换

    默认情况下,XStream 可以处理大多数标准的 Java 类型,包括基本类型、集合、Map 等。对于自定义的 Java 类,XStream 会尝试找到一个无参构造函数来创建对象,并根据类的字段来填充 XML 数据。 在使用 XStream 进行...

    com.thoughtworks.xstream.XStream操作XML和java对象的一些用法

    总的来说,XStream是Java开发中处理XML序列化和反序列化的强大工具,其简单易用的API使得XML与Java对象之间的转换变得轻松而高效。通过熟练掌握XStream的使用,开发者可以更好地在Java应用中利用XML进行数据交换和...

    好用的xStream XML和JAVA对象互相转换的简单示例

    在Java开发中,数据交换和持久化是常见的需求,XML作为一种通用的数据交换格式,被广泛应用于各种系统间的数据传输。...在实际应用中,可以根据项目需求进行定制和优化,充分利用XStream提供的各种选项和配置。

    XStream解析XML实例

    **XStream解析XML实例** 在Java开发中,处理XML数据是一项常见的任务,XStream库提供了一个简单而...通过理解上述概念和示例,开发者可以有效地利用XStream来处理XML数据,无论是在常规Java项目还是Android应用中。

    使用XStream是实现XML与Java对象的转换(4)--转换器

    这篇博文将深入探讨如何利用XStream的转换器功能来优化这一过程。 XStream的核心原理是通过反射机制自动将Java对象映射到XML结构,并反之亦然。然而,在某些情况下,我们可能需要自定义转换规则,比如处理特殊类型...

    XStream测试Demo-xml与java对象的相互转换

    这个"XStream测试Demo-xml与java对象的相互转换"是一个实例,展示了如何利用XStream进行这两种操作。在本文中,我们将深入探讨XStream的工作原理、使用方法以及其在实际开发中的应用。 首先,XStream的核心功能是...

    xStream完整Jar包

    对于复杂的数据结构,如集合和嵌套对象,XStream 也能优雅地处理。 **XStream 的特性** 1. **易用性**:XStream 提供了简单的 API,只需几行代码就可以实现序列化和反序列化。 2. **灵活性**:通过自定义转换器,...

    XStream+1.3(xstream).CHM

    为了更好地理解和利用XStream,开发者应深入研究其API文档,学习如何配置转换器,处理嵌套的对象关系,以及如何处理XML的命名空间和属性。 总的来说,XStream 1.3是一个功能强大且易于使用的XML序列化库,它简化了...

    xstream-1.4-API

    - **自定义对象**: 只需定义好 Java 类,XStream 就能自动处理其属性和嵌套对象。 ### 4. **映射 XML 和 Java 类** - **字段映射(Field Aliases)**: 使用 `aliasField()` 方法可以为类的字段设置别名。 - **类...

    xStream学习xml,JASON,JAVA对象转换

    这篇博客文章,标题为“xStream学习xml,JASON,JAVA对象转换”,显然会探讨如何利用XStream来处理这两种数据格式。 XStream的核心功能在于其简单易用的API,可以将Java对象直接序列化成XML或JSON字符串,同时也能...

    xStream xml to bean

    这个工具类的目标就是利用xStream的功能,方便地将XML文档转换为Java Bean对象,以及将Bean对象转换为XML字符串。 xStream的核心思想是通过反射和类型映射来实现对象与XML之间的转换。它使用一种称为“annoation”...

    android XMl 解析神奇xstream 一

    在“android XML解析神奇xstream 一”这个主题中,我们将深入探讨如何在Android项目中利用XStream进行XML解析。 首先,XStream的核心特性在于它的易用性。通过简单的API调用,开发者可以轻松地实现对象到XML的转换...

    XStream简单应用实例(xml)

    这个"XStream简单应用实例(xml)"的主题将向我们展示如何利用XStream库进行对象到XML的序列化和反序列化操作。 首先,XStream的核心功能是通过简单的API提供XML与Java对象之间的映射。它的基本用法包括创建一个...

    xstream对象与xml转换

    通过实践,你会更熟悉如何在各种场景下利用XStream进行对象和XML之间的转换。 总之,XStream是一个强大的工具,可以帮助开发者轻松地在Java对象和XML之间进行转换。其简洁的API和自动类型转换能力使得它在处理序列...

    springMVC整合xStream实现对象和xml转换

    XStream的优点在于它能自动处理基本数据类型、集合和自定义类的转换,使得XML序列化和反序列化变得极其简单。 要实现"springMVC整合xStream实现对象和xml转换",我们需要以下步骤: 1. **引入依赖**:在项目的pom....

    XStream 1.3 API 手册

    在实际开发中,掌握这些知识可以帮助你更有效地利用XStream进行数据序列化和反序列化,提高代码的可读性和可维护性。对于更高级的应用,如自定义转换器和安全性配置,需要进一步查阅官方文档深入学习。

    使用XStream是实现XML与Java对象的转换(3)--注解

    本文将深入探讨如何利用XStream的注解功能来实现这一目标。 首先,XStream库的核心理念是通过简单的映射机制将Java对象直接转换为XML,反之亦然。通过注解,我们可以更加灵活地控制对象到XML的映射规则,避免编写...

    XStream小例子

    XStream是一个Java库,它能够将Java对象转换成XML,反之亦然,为数据序列化提供了方便。这个小例子将帮助我们理解XStream...通过理解和实践这些基本操作,你可以有效地利用XStream进行数据持久化或与其他系统交换数据。

    XStream_jar.zip

    在这个例子中,`Person` 类需要实现 `Serializable` 接口,这是 Java 中所有可序列化对象的基接口。不过,XStream 不需要这个接口,即使没有实现它也能正常工作,因为它是基于反射的。 XStream 还支持对 XML 输出...

    xstream使用小记

    《Xstream使用小记》 Xstream是一款Java库,它提供了简单且强大的方式来序列化和反序列化Java对象到XML,以及从XML回转换为Java对象。...通过深入理解和实践,我们可以充分利用Xstream来提升开发效率和代码质量。

Global site tag (gtag.js) - Google Analytics