本文為博主原創,未經允許不得轉載:
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字段與實體類字段進行映射。
具體可參考:https://blog.csdn.net/dc282614966/article/details/80970750
此處展示注解式轉換的實例:
@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);
