xStream转换XML、Json数据
xStream可以轻易的将javaBean对象和xml相互转换,修改某个特定的属性和节点名称,而且也支持json的转换。
maven依赖:
1 <dependency> 2 <groupId>com.thoughtworks.xstream</groupId> 3 <artifactId>xstream</artifactId> 4 <version>1.4.5</version> 5 </dependency>
一:javaBean <-> xml
1.基本
1 class Person {
2 private String name; 3 private int phoneNuber; 4 private List<Address> addresses = new ArrayList<Address>(); 5 ... 6 } 7 class Address { 8 private String street; 9 private int houseNo; 10 ... 11 } 12 public static String toXML(){ 13 XStream xStream = new XStream(); 14 xStream.alias("person", Person.class); 15 xStream.alias("address",Address.class); 16 xStream.setMode(XStream.NO_REFERENCES); 17 xStream.addImplicitCollection(Person.class, "addresses");//去除 addresses节点生成 18 xStream.useAttributeFor(Person.class,"name"); //name作为person节点的属性出现,即name=xxx,不设置此项的话,name作为单独的节点<name>出现 19 return xStream.toXML(person); 20 } 21 public static Person toEntity(String inputXML){ 22 XStream xs = new XStream(); 23 xs.alias("person",Person.class); 24 xs.alias("address",Address.class); 25 xs.setMode(XStream.NO_REFERENCES); 26 xs.addImplicitCollection(Person.class,"addresses"); 27 xs.useAttributeFor(Person.class, "name"); 28 Person person = (Person)xs.fromXML(inputXML); 29 return person; 30 }
2.基于annotations
//设置Person类在xml中的别名 @XStreamAlias("person") class Person { //将name设置为XML person 元素的 attribute @XStreamAsAttribute() private String name; private int phoneNuber; //将此字段名在XML中去掉 @XStreamImplicit() private List<Address> addresses = newArrayList<Address>(); ... } @XStreamAlias("address") class Address { private String street; private int houseNo; ... } public static Person toEntity(String inputXML){ XStream xs = new XStream(); xs.setMode(XStream.NO_REFERENCES); //注册使用了注解的bean xs.processAnnotations(new Class[]{Person.class,Address.class}); Person person = (Person)xs.fromXML(inputXML); return person; } public static String toXML(){ XStream xStream = new XStream(); xStream.setMode(XStream.NO_REFERENCES); //注册使用了注解的VO xStream.processAnnotations(new Class[]{Person.class,Address.class}); return xStream.toXML(person); }
2.javaBean <-> json
待完善。。。。。。。。。。。。。