JavaBean转xml的工具就是:XStream



XStream的作用:

XStream可以把JavaBean对象转换成XML!通常服务器向客户端响应的数据都是来自数据库的一组对象,当我们不能直接把对象响应给响应端,需要把对象转换成XML再响应给客户端,这时就需要使用XStream组合了。

XStream使用:

为了演示XStream的作用,我们需要先写两个类,Province和City。

//City.java
public class City {
private String name;
private String description;
}
//Province.java
public class Province {
private String name;
private List<City> cities = new ArrayList<City>(); public void addCity(City city) {
cities.add(city);
}
}

接下来,我们需要写一个main(),创建一个List,List中存放两个Province对象!最终我们把List转换成XML。

Province p1 = new Province("辽宁省");
p1.addCity(new City("沈阳", "shenyang"));
p1.addCity(new City("大连", "dalian")); Province p2 = new Province("吉林省");
p2.addCity(new City("长春", "changchen"));
p2.addCity(new City("白城", "baicheng")); List<Province> list = new ArrayList<Province>(); list.add(p1);
list.add(p2);

XStream相关JAR包:

我们可以到http://x-stream.github.io/index.html地址去下载XStream安装包!

XStream的必导JAR包:

------核心JAR包:xstream-1.4.7.jar;

------必须依赖包:xpp3_min-1.1.4c(XML Pull Parser,一款速度很快的XML解析器);

使用XStream把Java对象转换成XML:

下面是使用XStream转换list为XML的代码:

XStream xstream = new XStream();
String s = xstream.toXML(list);
System.out.println(s);
<list >
<cn.itcast.xstream.demo1.Province >
<name >辽宁省</name>
<cities >
<cn.itcast.xstream.demo1.City >
<name >沈阳</name>
<description >shenyang</description>
</cn.itcast.xstream.demo1.City>
<cn.itcast.xstream.demo1.City>
<name>大连</name>
<description>dalian</description>
</cn.itcast.xstream.demo1.City>
</cities>
</cn.itcast.xstream.demo1.Province>
<cn.itcast.xstream.demo1.Province>
<name>吉林省</name>
<cities>
<cn.itcast.xstream.demo1.City>
<name>长春</name>
<description>changchen</description>
</cn.itcast.xstream.demo1.City>
<cn.itcast.xstream.demo1.City>
<name>白城</name>
<description>baicheng</description>
</cn.itcast.xstream.demo1.City>
</cities>
</cn.itcast.xstream.demo1.Province>
</list>

可以看出,XStream是根据对象名、类名、属性名来生成XML文档的!

下面是一些细节扩展:

alias用法:

大家也看到了,生成的XML中,与类名对应的元素名称包含了包名部分,这很不好看!若想自定义生成的元素名称,需要使用XStream为类名提供别名:

xstream.alias("province", Province.class);
xstream.alias("china", List.class);
xstream.alias("city", City.class);
<china>
<province>
<name>辽宁省</name>
<cities>
<city>
<name>沈阳</name>
<description>shenyang</description>
</city>
<city>
<name>大连</name>
<description>dalian</description>
</city>
</cities>
</province>
<province>
<name>吉林省</name>
<cities>
<city>
<name>长春</name>
<description>changchen</description>
</city>
<city>
<name>白城</name>
<description>baicheng</description>
</city>
</cities>
</province>
</china>

把子元素变为元素属性:

例如我们需要把<province>子元素<name>变成:<province name=””>样式,那么需要调用如下方法:

xstream.useAttributeFor(Province.class, "name"); 
<china>
<province name="辽宁省">
<cities>
<city>
<name>沈阳</name>
<description>shenyang</description>
</city>
<city>
<name>大连</name>
<description>dalian</description>
</city>
</cities>
</province>
<province name="吉林省">
<cities>
<city>
<name>长春</name>
<description>changchen</description>
</city>
<city>
<name>白城</name>
<description>baicheng</description>
</city>
</cities>
</province>
</china>

去除集合属性对应元素:

大家可能已经发现了,因为Pronvice类有一个cities成员,所以生成了<cities>元素,但这个元素对XML文档而言没有什么意义,所以我们希望把它去除!

xstream.addImplicitCollection(Province.class, "cities"); 
<china>
<province name="辽宁省">
<city>
<name>沈阳</name>
<description>shenyang</description>
</city>
<city>
<name>大连</name>
<description>dalian</description>
</city>
</province>
<province name="吉林省">
<city>
<name>长春</name>
<description>changchen</description>
</city>
<city>
<name>白城</name>
<description>baicheng</description>
</city>
</province>
</china>

让类的成员不生成对应XML元素:

到现在为止,我们都是每个类,每个成员都有对应的元素(或属性)存在,但有时我们并不希望某些类的成员在对应的XML文档中出现,例如我们不希望City类的description成员出现在XML文档中,可以使用下面方法:

xstream.omitField(City.class, "description");  
<china>
<province name="辽宁省">
<city>
<name>沈阳</name>
</city>
<city>
<name>大连</name>
</city>
</province>
<province name="吉林省">
<city>
<name>长春</name>
</city>
<city>
<name>白城</name>
</city>
</province>
</china>

END

JavaBean转xml的更多相关文章

  1. json、javaBean、xml互转的几种工具介绍

    json.javaBean.xml互转的几种工具介绍 转载至:http://blog.csdn.net/sdyy321/article/details/7024236 工作中经常要用到Json.Jav ...

  2. json、javaBean、xml互转的几种工具介绍 (转载)

    工作中经常要用到Json.JavaBean.Xml之间的相互转换,用到了很多种方式,这里做下总结,以供参考. 现在主流的转换工具有json-lib.jackson.fastjson等,我为大家一一做简 ...

  3. javabean 和 xml 互转

    1.场景描述 将javabean对象转换为xml字符串,将xml字符串转换为javabean对象. 2.maven依赖 <dependency> <groupId>jdom&l ...

  4. JavaBean与xml互转的方法详解

    本文实例讲述了Jaxb2实现JavaBean与xml互转的方法.分享给大家供大家参考,具体如下: 一.简介 JAXB(Java Architecture for XML Binding) 是一个业界的 ...

  5. JavaBean与XML转换——XStream使用笔记

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6648131.html  一:View层与Control层的数据交互 做过Web项目的人都知道,当对一个requ ...

  6. Jaxb2实现JavaBean与xml互转的方法详解

    本文实例讲述了Jaxb2实现JavaBean与xml互转的方法.分享给大家供大家参考,具体如下: 一.简介 JAXB(Java Architecture for XML Binding) 是一个业界的 ...

  7. Java Jaxb JavaBean与XML互转

    1.Jaxb - Java Arcitecture for XML Binding 是业界的一个标准,是一项能够依据XML Schema产生Java类的技术. Jaxb2.0是Jdk1.6的组成部分. ...

  8. Jaxb2 实现JavaBean与xml互转

    一.简介 JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了将XML实 ...

  9. JavaBean转换为XML的源码

    package com.cmge.utils; import java.util.Iterator; import com.cmge.org.oa.bean.OADepartment; import ...

随机推荐

  1. resolve和reject不会终结Promise的参数函数的执行

  2. 如何高效的使用 Git---转

    Git 工作流 当有多个开发者同时涉及到一个项目时那么就非常有必要正确使用 Git 工作流. 这里我将介绍一种工作流,它在一个多人大型项目中将非常有用. 前言 突然有一天,你成为了一个项目的技术 Le ...

  3. Revit API 操作共享参数和项目参数

    1.获取共享参数 private string GetSharInfo(Autodesk.Revit.ApplicationServices.Application revitApp) { Strin ...

  4. Mysql5.6 for Centos6.5源码编译安装

    ## 说明 不同服务器需要改变 server_id ,同一台机器上需要改变 port 1. 关闭防火墙[root@mysql ~]# service iptables status --查看防火墙状态 ...

  5. monkey配置及简单报告生成(安卓)

    参考网址:http://www.51testing.com/html/72/502872-3709760.html   1.安装jdk,配置环境变量   2.安装sdk(解压后,配置环境变量到path ...

  6. Centos维护命令

    1.查看系统版本 cat /etc/issue cat /etc/redhat-release 3. cat /proc/version 4.uname -a 显示如下 5 uname -r (二)查 ...

  7. Intellj(IDEA)创建java webapp

    1. 创建工程 2. 创建Java文件 并且将java文件夹将设置为Sources Root 3. 创建test文件夹,并且在test文件夹下面创建java文件夹 将test下面的java文件夹标记为 ...

  8. Go hashcode 输入一个字符串,得到一个唯一标识码

    如何输入一个字符串,得到一个唯一的hashcode? 例子如下: package main import ( "fmt" "hash/crc32" ) // S ...

  9. Xshell中vim退出内容仍停留在屏幕的问题

    Xshell中vim退出内容仍停留在屏幕的问题 我每次在vim中退出后内容都显示在屏幕上面,看上去特别烦,就在网上看了下,通过调试成功. 第一种方法:在xshell中设置 1.这是我在vim中退出的状 ...

  10. VarIsOrdinal,VarIsFloat,VarIsNumeric判断数字

    VarIsOrdinal        VarIsFloat        VarIsNumeric 就三个. 第一个 是否int,boolean 第二个 是否Double,Simple,Curren ...