JavaBean转xml
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的更多相关文章
- json、javaBean、xml互转的几种工具介绍
json.javaBean.xml互转的几种工具介绍 转载至:http://blog.csdn.net/sdyy321/article/details/7024236 工作中经常要用到Json.Jav ...
- json、javaBean、xml互转的几种工具介绍 (转载)
工作中经常要用到Json.JavaBean.Xml之间的相互转换,用到了很多种方式,这里做下总结,以供参考. 现在主流的转换工具有json-lib.jackson.fastjson等,我为大家一一做简 ...
- javabean 和 xml 互转
1.场景描述 将javabean对象转换为xml字符串,将xml字符串转换为javabean对象. 2.maven依赖 <dependency> <groupId>jdom&l ...
- JavaBean与xml互转的方法详解
本文实例讲述了Jaxb2实现JavaBean与xml互转的方法.分享给大家供大家参考,具体如下: 一.简介 JAXB(Java Architecture for XML Binding) 是一个业界的 ...
- JavaBean与XML转换——XStream使用笔记
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6648131.html 一:View层与Control层的数据交互 做过Web项目的人都知道,当对一个requ ...
- Jaxb2实现JavaBean与xml互转的方法详解
本文实例讲述了Jaxb2实现JavaBean与xml互转的方法.分享给大家供大家参考,具体如下: 一.简介 JAXB(Java Architecture for XML Binding) 是一个业界的 ...
- Java Jaxb JavaBean与XML互转
1.Jaxb - Java Arcitecture for XML Binding 是业界的一个标准,是一项能够依据XML Schema产生Java类的技术. Jaxb2.0是Jdk1.6的组成部分. ...
- Jaxb2 实现JavaBean与xml互转
一.简介 JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了将XML实 ...
- JavaBean转换为XML的源码
package com.cmge.utils; import java.util.Iterator; import com.cmge.org.oa.bean.OADepartment; import ...
随机推荐
- Quartz学习总结
一.基本介绍: Quartz 是 OpenSymphony 开源组织在任务调度领域的一个开源项目,完全基于 Java 实现.该项目于 2009 年被 Terracotta 收购,目前是 Terraco ...
- node api 之:Buffer
在 ECMAScript 2015 引入 TypedArray 之前,JavaScript 语言没有读取或操作二进制数据流的机制. Buffer 类被引入作为 Node.js API 的一部分,使其可 ...
- 在外网访问家里面的电脑 和 DMZ
方法1:使用 MDZ ( demilitarized zone), 中文意思 非武装的区域.我们的家用电脑一般都在 路由器所在的 C类内网(192.X.X.X 的 ip).外网是不能直接访问内网的. ...
- href="javacript:;" href="javacript:void(0);" href="#"区别。。。
一.href="javacript:;" 这种用法不正确,这么用的话会出现浏览器访问“javascript:;”这个地址的现象: 二.href="javacript:v ...
- Kafka 基本概念学习笔记
一. 什么是Kafka 面向数据流的生产,转换,存储,消费的整体流处理平台 二.Kafka三大特性 1.发布和订阅数据的流,类似于消息队列,消息系统 2..数据流存储平台 3.当数据产生的时候,对数据 ...
- Go RPC返回值
Go 语言RPC定义格式如下: func (t T) MethodName(argType T1, replyType T2) error 第一个参数是接收的参数,第二个参数是返回给客户端的参数,第二 ...
- 推荐四款 Bug 管理系统,最适合你的才是最好的!
转载自:https://www.jianshu.com/p/e7d3121eaaec 在这个移动互联网的时代,每天都会涌入大量新的 App,想要留住你的用户,必须时刻保持产品创新与系统的稳定.对于 ...
- Feign 请求拦截器和日志
Feign 支持请求拦截器,在发送请求前,可以对发送的模板进行操作,例如设置请求头等属性,自定请求拦截器需要实现 feign.RequestInterceptor 接口,该接口的方法 apply 有参 ...
- php 异步执行脚本
这里说的异步执行是让php脚本在后台挂起一个执行具体操作的脚本,主脚本退出后,挂起的脚本还能继续执行.比如执行某些耗时操作或可以并行执行的操作,可以采用php异步执行的方式.主脚本和子脚本的通讯可以采 ...
- AI硬件 XPU
市场对人工智能的热情持续高涨,特别是硬件领域.人工智能将成为下一个大风口,首当其冲的就包括硬件, 在图像语音识别.无人驾驶等人工智能领域的运用层面,图形处理器 (GPU)正迅速扩大市场占比,而谷歌专门 ...