- 浏览: 50113 次
- 性别:
文章分类
最新评论
1、pom.xml依赖包:
2、java代码实现转换
bean实体类:
User.java
UserList.java
3、xml转bean
4、bean转xml
bean转xml输出结果:
除了上面示例中用的注解,xstream还有下面几种注解也经常用到。
@XstreamOmitField 忽略字段
这相当于设置某些字段为临时属性,在转换中不再起作用。
@XStreamConverter(XXX.class) 转换器
XXX.class是一个实现了com.thoughtworks.xstream.converters.Converter接口的转换器,对某些类型的值进行转换,比如布尔值类型的true或false,如果不加转换器,默认生成的值就是true或false。xstream自带了BooleanConverter转换器,可以将默认值转换成需要的文本值,如果xstream没有需要的转换器就得自己实现Converter接口来自定义转换器。
根据大象的经验,为了少给自己找麻烦,比如避免使用转换器,最好将与XML元素或属性对应的Java对象属性都设置成String类型,当然列表还是要定义成List类型的。只要不是特别奇葩,一般情况下,示例部分就能满足绝大部分的需求。
<dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId>xstream</artifactId> <version>1.4.7</version> </dependency>
2、java代码实现转换
bean实体类:
User.java
import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; // 别名注解,这个别名就是XML文档中的元素名,Java的属性名不一定要与别名一致 @XStreamAlias("user") public class User { @XStreamAlias("name") private String name; @XStreamAlias("age") private String age; @XStreamAlias("id") // 属性注解,此price就是book的属性,在XML中显示为:<user id="1"> @XStreamAsAttribute private Integer id; @XStreamAlias("address") private String address; @XStreamAlias("card") private String card; @XStreamAlias("gender") private String gender; /** setter和getter省略 */ }
UserList.java
import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamImplicit; import java.util.ArrayList; import java.util.List; @XStreamAlias("users") public class UserList { @XStreamAlias("value") @XStreamAsAttribute private String value; // 隐式集合,加上这个注解可以去掉book集合最外面的<list></list>这样的标记 @XStreamImplicit private List<User> list = new ArrayList<User>(); public void addUser(User user){ this.list.add(user); } /** setter和getter省略 */ }
3、xml转bean
public static void xmlToBean(){ String xmlStr ="<users value=\"0\">\n" + " <user id=\"1\">\n" + " <name>jiandequn</name>\n" + " <age>29</age>\n" + " <address>深圳市西丽白芒村</address>\n" + " <card>1546464</card>\n" + " <gender>male</gender>\n" + " </user>\n" + "</users>"; XStream xStream = new XStream(new DomDriver("utf-8")); xStream.processAnnotations(UserList.class);; // 识别obj类中的注解 UserList userList = (UserList) xStream.fromXML(xmlStr); System.out.println(userList.getValue()); }
4、bean转xml
public static void beanToXml(){ User user = new User(); user.setAddress("深圳市西丽白芒村"); user.setAge("29"); user.setCard("1546464"); user.setId(1); user.setGender("male"); user.setName("jiandequn"); UserList userList = new UserList(); userList.setValue("0"); userList.addUser(user); XStream xStream = new XStream(new DomDriver("utf-8")); xStream.processAnnotations(userList.getClass());; // 识别obj类中的注解 // 以压缩的方式输出XML // StringWriter sw = new StringWriter(); // xStream.marshal(userList, new CompactWriter(sw)); // 以格式化的方式输出XML System.out.println( xStream.toXML(userList)); }
bean转xml输出结果:
<users value="0"> <user id="1"> <name>jiandequn</name> <age>29</age> <address>深圳市西丽白芒村</address> <card>1546464</card> <gender>male</gender> </user> </users>
除了上面示例中用的注解,xstream还有下面几种注解也经常用到。
@XstreamOmitField 忽略字段
这相当于设置某些字段为临时属性,在转换中不再起作用。
@XStreamConverter(XXX.class) 转换器
XXX.class是一个实现了com.thoughtworks.xstream.converters.Converter接口的转换器,对某些类型的值进行转换,比如布尔值类型的true或false,如果不加转换器,默认生成的值就是true或false。xstream自带了BooleanConverter转换器,可以将默认值转换成需要的文本值,如果xstream没有需要的转换器就得自己实现Converter接口来自定义转换器。
根据大象的经验,为了少给自己找麻烦,比如避免使用转换器,最好将与XML元素或属性对应的Java对象属性都设置成String类型,当然列表还是要定义成List类型的。只要不是特别奇葩,一般情况下,示例部分就能满足绝大部分的需求。
发表评论
-
java 之sftp实现
2018-03-31 17:41 618上周进行了linux环境下sftp的配置和用户权限的创建:ht ... -
java webService之CXF的使用
2018-03-29 14:25 392使用场景:华为VOD系统与媒资系统的接口,资产数据(元数据XM ... -
java 中jstat的用法
2018-03-20 18:06 680JDK自带VM分析工具jps,jstat,jmap,jcons ... -
javaEE性能优化
2018-03-20 16:41 465性能的优化一般可以从多方面入手,前端资源,java程序,数据传 ... -
jvm gc日志检查
2018-03-20 15:08 334JVM的GC日志的主要参数包括如下几个: -XX:+Pr ... -
负载均衡的几种原理
2018-03-19 16:05 436什么是负载均衡? 就 ... -
基于TCP协议实现RPC
2018-03-19 11:28 674RPC的全称:Remote Process Call,即远程过 ... -
java 多线程
2018-03-16 13:29 321Java 多线程编程 Java 给 ... -
SpringMVC执行流程图
2018-03-15 10:46 433SpringMVC 流程图 DispatcherServle ... -
Java中BIO、NIO、AIO的原理及其区别
2018-03-12 17:34 613IO的处理方式通常分为 ... -
基于Spring 自定义标签实现
2017-11-30 09:26 490一、源码分析: Spring标签的定义分为默认标签和自定义 ... -
java二维码的生成和解析
2017-09-26 11:15 400一、本文目的: 为了研究对支付宝和微信支付的统一路口管理 ... -
spring-data-redis
2017-09-18 11:54 699Spring-data-redis使用 1、maven依赖 ... -
java,redis
2017-09-18 11:32 322Redis 简介 Redis 是完全开源免费的,遵守BSD协议 ... -
Java JVM虚拟机知识要点
2017-08-30 10:25 5681、JVM虚拟机图解: ... -
java 上传小于占用空间为4k的jpg图片异常问题处理
2017-07-19 18:02 493javaWeb上传图片 jpg占用空间为4k时,Commons ... -
Springmvc 注入字符串与时间格式的转换
2017-03-24 11:10 1148以下列出两种spring支持的时间转换 -、方式一 1、 ... -
linux下修改war包
2017-03-06 15:32 1037Linux上修改war包上的文件 www.MyExceptio ... -
itellij idea 11.1.3 mybatis 自动构建代码
2016-11-16 09:50 405步骤一: 1、在工程中pom.xml加添 <buil ... -
intellij idea 下resin容器远程调试
2016-11-16 09:27 5313resin远程调试(我使用的是resin-4.0.41版本): ...
相关推荐
它可以将Java对象转换为XML文档,也可以将XML文档转换为Java对象。 pom引用 <groupId>com.thoughtworks.xstream</groupId> <artifactId>xstream <version>1.4.20 实体类和测试类详见博客 ...
利用面向对象的思想; 1.实现读取xml文件,映射为相应实体类。 2.将实体类内容转化为xml文件。对于我们开发来说,有了实体类,增删改查,不是轻而易举!不多说,上图(这里没法上),上代码。
xml转javaBean,javaBean转xml,xml标签大小写问题,CDATA的生成,以及对xml特殊符号的处理
链接数据库后生成对应的实体、vo,service,xml,基础sql文件
java.beans.beancontext 提供与 bean 上下文有关的类和接口。 java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 ...
从内存中清除,从账户中取出amt,如果amt>账户余额抛出异常,一个实体Bean可以表示不同的数据实例,我们应该通过主键来判断删除哪个数据实例…… ejbCreate函数用于初始化一个EJB实例 5个目标文件,演示Address EJB...
java.beans.beancontext 提供与 bean 上下文有关的类和接口。 java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java ...
java.beans.beancontext 提供与 bean 上下文有关的类和接口。 java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java ...
java.beans.beancontext 提供与 bean 上下文有关的类和接口。 java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 ...
l JaxMe是JAXB(Java/XML绑定规范)的开源实现 l Java/XML绑定编译器的输入是...Ø 实现相同功能的实体bean或会话bean l 总之,通过简单的创建模式,运行JaxMe绑定编译器,就能自动生成典型Web应用整个工作流程的类
从内存中清除,从账户中取出amt,如果amt>账户余额抛出异常,一个实体Bean可以表示不同的数据实例,我们应该通过主键来判断删除哪个数据实例…… ejbCreate函数用于初始化一个EJB实例 5个目标文件,演示Address ...
从内存中清除,从账户中取出amt,如果amt>账户余额抛出异常,一个实体Bean可以表示不同的数据实例,我们应该通过主键来判断删除哪个数据实例…… ejbCreate函数用于初始化一个EJB实例 5个目标文件,演示Address ...
该案例采用目前最流行、最规范的java ee架构,整个应用分为jpa实体层、eao层、业务逻辑层、mvc层和视图层,各层之间分层清晰,层与层之间以松耦合的方法组织在一起。该案例既提供了ide无关的、基于ant管理的项目源码...
从内存中清除,从账户中取出amt,如果amt>账户余额抛出异常,一个实体Bean可以表示不同的数据实例,我们应该通过主键来判断删除哪个数据实例…… ejbCreate函数用于初始化一个EJB实例 5个目标文件,演示Address ...
从内存中清除,从账户中取出amt,如果amt>账户余额抛出异常,一个实体Bean可以表示不同的数据实例,我们应该通过主键来判断删除哪个数据实例…… ejbCreate函数用于初始化一个EJB实例 5个目标文件,演示Address ...
java.beans.beancontext 提供与 bean 上下文有关的类和接口。 java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 ...
从内存中清除,从账户中取出amt,如果amt>账户余额抛出异常,一个实体Bean可以表示不同的数据实例,我们应该通过主键来判断删除哪个数据实例…… ejbCreate函数用于初始化一个EJB实例 5个目标文件,演示Address ...
目录 前言 第1部分 介绍数据库、SQL和JDBC 第1章 关系型数据库 1.1 理解关系型数据库管理系统 1.1.1 关系模型 1.1.2 Codd法则 1.1.3 表、行、列和关键字 ... 17.3 使用Java XML API——Xerces和JDOM ...
保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除,从账户中取出amt,如果amt>账户余额抛出异常,一个实体Bean可以表示不同的数据实例,我们应该通过主键来判断删除哪个数据实例…… ejbCreate函数用于初始...