XStream轻松转换xml和java对象
来源:互联网 发布:全景视频转换软件 编辑:程序博客网 时间:2024/05/16 17:20
首先引入所需的jar:
xstream-1.4.9、xpp3_min-1.1.4c、dom4j-1.6.1,
或用maven管理jar包时在pom.xml中添加:
<!-- https://mvnrepository.com/artifact/com.thoughtworks.xstream/xstream --><dependency><groupId>com.thoughtworks.xstream</groupId><artifactId>xstream</artifactId><version>1.4.9</version></dependency><!-- https://mvnrepository.com/artifact/xpp3/xpp3_min --><dependency><groupId>xpp3</groupId><artifactId>xpp3_min</artifactId><version>1.1.4c</version></dependency><!-- https://mvnrepository.com/artifact/dom4j/dom4j --><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version></dependency>实体类如下:
package com.cn.entity;public class Address {//国private String country;//省private String province;//市private String city;//县private String county;//镇private String town;get...set...}
<pre name="code" class="java">package com.cn.entity;import java.util.List;public class Person {//姓名private String name;//性别private String sex;//年龄private int age;//地址private List<Address> Address;get...set...}XStream工具类:
package com.cn.util;import com.cn.entity.Address;import com.cn.entity.Person;import com.thoughtworks.xstream.XStream;import com.thoughtworks.xstream.io.xml.DomDriver;/** * XStream工具类 * @author sun.kai * 2016年8月13日 */public class XStreamUtil {private static XStream xStream;//JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。static{xStream = new XStream(new DomDriver());/* * 使用xStream.alias(String name, Class Type)为任何一个自定义类创建到类到元素的别名 * 如果不使用别名,则生成的标签名为类全名 */xStream.alias("person", Person.class);xStream.alias("address", Address.class);//将某一个类的属性,作为xml头信息的属性,而不是子节点xStream.useAttributeFor(Address.class, "country");//对属性取别名xStream.aliasField("省", Address.class,"province");}//xml转java对象public static Object xmlToBean(String xml){return xStream.fromXML(xml);}//java对象转xmlpublic static String beanToXml(Object obj){return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xStream.toXML(obj);}}
测试用例:
package com.test.test;import java.util.ArrayList;import java.util.List;import com.cn.entity.Address;import com.cn.entity.Person;import com.cn.util.XStreamUtil;public class TestXStream {public static void main(String[] args) {long time1 = System.currentTimeMillis();//测试java对象转xml,java对象中包含集合对象Person person = new Person();person.setName("admin管理员");person.setSex("男");person.setAge(25);List<Address> adds = new ArrayList<Address>();Address address1 = new Address();address1.setCountry("中国");address1.setProvince("安徽");address1.setCity("宿州");address1.setCounty("萧县");Address address2 = new Address();address2.setCountry("中国");address2.setProvince("上海");address2.setCity(null);address2.setCounty("");adds.add(address1);adds.add(address2);person.setAddress(adds);String xml = XStreamUtil.beanToXml(person);System.out.println(xml);//测试xml转java对象Person person2 = (Person) XStreamUtil.xmlToBean(xml);System.out.println(person2.getAddress().get(1).getProvince());long time2 = System.currentTimeMillis();System.out.println((time2-time1)+"ms");}}
执行后控制台打印:
<?xml version="1.0" encoding="UTF-8"?><person> <name>admin管理员</name> <sex>男</sex> <age>25</age> <Address> <address country="中国"> <省>安徽</省> <city>宿州</city> <county>萧县</county> </address> <address country="中国"> <省>上海</省> <county></county> </address> </Address></person>上海669ms
总结:
(1) XStream是一个可以将javaBean与XML双向转换的java类库。
(2) Java到xml,使用toXML()方法;xml到Java,用fromXML()方法。
(3) 类别名,用alias(String name, Class type)。
(4) 类成员别名,用aliasField(String alias, Class definedIn, String fieldName)。
(5) 将某一个类的属性,作为xml头信息的属性,而不是子节点,用useAttributeFor(Class definedIn, String fieldName)。
(5) 类成员作为属性别名,用 aliasAttribute(Class definedIn, String attributeName, String alias),单独命名没有意义,还要通过useAttributeFor(Class definedIn, String fieldName) 应用到某个类上。
(6) XStream默认当String类型的属性值为null时不封装到xml中。可以根据实际传xml情况,选择对象属性set空字符串还是null。
1 0
- XStream轻松转换xml和java对象
- java+xstream实现xml序列化(XStream轻松转换xml和java对象)
- java 使用XStream Java对象和XML之间的转换
- 利用XStream在Java对象和XML之间相互转换
- 利用XStream在Java对象和XML之间相互转换
- 利用XStream在Java对象和XML之间相互转换
- 利用XStream在Java对象和XML之间相互转换
- 利用XStream在Java对象和XML之间相互转换
- 利用XStream在Java对象和XML之间相互转换
- 使用XStream将Java对象和XML之间相互转换
- Xml字符串和Java对象转换利器——XStream
- 利用XStream在Java对象和XML之间相互转换
- XStream: Java对象和XML之间相互转换的利器
- xstream实现java对象和XML的互相转换
- 利用XStream在Java对象和XML之间相互转换
- 两行代码轻松搞定XML和对象间相互转换. XStream 简单示例.
- Java对象转换XML文件:XStream+XPP
- XStream转换Java对象与XML
- 深入类加载器----类加载器的分类和等级
- LintCode:复制带随机指针的链表
- DevOps linux 常用命令
- 深入类加载器----线程上下文类加载器
- 4-2 顺序表操作集 (20分)
- XStream轻松转换xml和java对象
- 异或用法(转)
- 接口回调
- scrollview嵌套listview滑动,上拉刷新,冲突等问题
- 深入类加载器---自定义类加载器
- iOS开发中常用的设计模式
- .dSYM解析.crash
- 看着就可怕
- MySQL数据库触发器讲解 [创建/删除/查询/select into]