添加pom依赖
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.15</version>
</dependency>
工具类代码
package com.yongen.org;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
/**
* @author yongen
* @description: 使用XStream实现Java对象与XML互相转换
* @date 2021/5/18 3:29 下午
*/
public class XmlUtils {
/**
* XML转对象 单一节点
* @param clazz 对象类
* @param xml xml字符串
* @return <T> 对象类
*/
public static <T> T parseFromXml(Class<T> clazz, String xml) {
XStream xStream = new XStream();
//设置别名, 默认会输出全路径,这里设置为类名小写
xStream.alias(clazz.getSimpleName().toLowerCase(), clazz);
//解决xStream:Security framework of XStream not initialized, XStream is probably vulnerable
XStream.setupDefaultSecurity(xStream);
xStream.allowTypes(new Class[]{clazz});
//将XML字符串转为bean对象
try{
return (T) xStream.fromXML(xml.trim());
}catch (Exception e){
return null;
}
}
/**
* 对象转XML 单一节点
* @param obj 对象
* @return xml xml字符串
*/
public static <T> String toXml(T obj, Class<T> clazz) {
//创建解析XML对象
XStream xStream = new XStream();
//设置别名, 默认会输出全路径,这里设置为类名小写
xStream.alias(clazz.getSimpleName().toLowerCase(), clazz);
try{
return xStream.toXML(obj);
}catch (Exception e){
return null;
}
}
/**
* XML转对象(基于注解的形式) 单一节点
* @param clazz 对象类
* @param xml xml字符串
* @return <T> 对象类
*/
public static <T> T parseFromXmlAnnotations(Class<T> clazz, String xml) {
//创建解析XML对象
XStream xStream = new XStream(new DomDriver());
//处理注解
xStream.processAnnotations(clazz);
//解决xStream:Security framework of XStream not initialized, XStream is probably vulnerable
XStream.setupDefaultSecurity(xStream);
xStream.allowTypes(new Class[]{clazz});
//将XML字符串转为bean对象
try{
return (T) xStream.fromXML(xml.trim());
}catch (Exception e){
return null;
}
}
/**
* 对象转XML(基于注解的形式) 单一节点
* @param obj 对象
* @return xml xml字符串
*/
public static String toXmlAnnotations(Object obj) {
XStream xStream = new XStream(new DomDriver());
xStream.processAnnotations(obj.getClass());
try{
return xStream.toXML(obj);
}catch (Exception e){
return null;
}
}
}
示例代码
新建一个Java对象
public class User {
private String userName;
private String email;
public User() {}
public User(String userName, String email) {
this.userName = userName;
this.email = email;
}
public String toString() {
return "User:{userName=" + this.userName + ",email=" + this.email + "}";
}
//Getter and Setter...
}
如果使用注解
@XStreamAlias("user")
public class User {
@XStreamAlias("username")
private String userName;
@XStreamAlias("email")
private String email;
public User() {}
public User(String userName, String email) {
this.userName = userName;
this.email = email;
}
public String toString() {
return "User:{userName=" + this.userName + ",email=" + this.email + "}";
}
//Getter and Setter...
}
版权声明:本文为weixin_38938840原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。