本文为博主原创,未经允许不得转载:
xml在http通信中具有较高的安全性和传输速度,所以应用比较广泛,
在项目中往往需要对xml,json和实体类进行相互转换,在这里总结一下自己所用到的一些方法:
一. 使用XMLSerializer 将xml转为json格式
1.引入jar包:
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<classifier>jdk15</classifier>
</dependency>
使用示例:
public static void main(String[] args) {
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+"<domain xmlns:cloudcdn=\"http://cloud.chinanetcenter.com/extension/xhtml\">"
+ "<domain-id>fdg68</domain-id>"
+ "<domain-name>dfsg.com</domain-name>"
+ "<service-type>web-https</service-type>"
+ "<service-areas/>"
+ "<cname>fdsgsdg.com</cname>"
+ "<status>Deployed</status>"
+ "<comment/>"
+ "</domain>"
;
XMLSerializer cacheXmlSerializer = new XMLSerializer();
JSON referJsonResult = cacheXmlSerializer.read(xml);
JSONObject referJson = JSONObject.parseObject(referJsonResult.toString());
System.out.println(referJson);
//运行打印的结果为:
//{"domain-name":"dfsg.com","domain-id":"fdg68","service-type":"web-https","cname":"fdsgsdg.com","@xmlns:cloudcdn":"http://cloud.chinanetcenter.com/extension/xhtml","comment":[],"service-areas":[],"status":"Deployed"}
}
二.通过XStream将xml转化为实体类,
通过第一种方式也可以将xml解析为实体类,步骤为,先将xml转为json,然后将json转为实体类,
这里介绍的方式是通过XStream将xml转为实体类:
XStream是个很强大的工具,能将java对象和xml之间相互转化。xstream不在意java类中成员变量是私有还是公有,
也不在乎是否有默认构造函数。它调用方式也非常简单:从xml对象转化为java对象,使用fromXML()方法;
从java对象序列化为xml,toXML()即可,很方便。
xstream也支持注解方式,注解方式实现和非注解方式实现的区别在于是否单独解析别名,
如果是注解的方式,可以直接使用注解的属性将xml字段与实体类字段进行映射。
此处展示注解式转换的实例:
@XStreamAlias("message") 别名注解 ,作用就是将属性按照别名输出。
@XStreamAlias("User")
public class User {
@XStreamAlias("name")
private String name;
@XStreamAlias("age")
private String age;
@XStreamAlias("SEX")
private String sex;
public User(String name, String age, String sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
}
1.xml转换实体类的实现方式:
public static void main(String[] args) {
String xml="<User>\n"
+" <name>peter</name> \n"
+" <age>13</age> \n"
+" <SEX>男</SEX> \n"
+" </User>";
XStreamEx xStream = new XStreamEx();
xStream.processAnnotations(User.class);
User user = (User) xStream.fromXML(xml);
}
2.将实体类转xml的方式
User user = new User();
user.setName("test");
// 转换
XStream xStream = new XStream();
// 通过注解方式的,一定要有这句话
xStream.processAnnotations(user.getClass());
String xmlCfg = xStream.toXML(user);