Java XStream解析xml
1、pom(1.4.18及以上需要处理com.thoughtworks.xstream.security.NoTypePermission.allows问题)
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.17</version>
</dependency>
2、工具类
import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; public class XmlUtils { /** * XML转对象 * * @param clazz 对象类 * @param xml 字符串 * @param <T> T * @return */ public static <T> T parseFromXml(Class<T> clazz, String xml) { //创建解析XML对象 XStream xStream = new XStream(new DomDriver()); //处理注解 xStream.processAnnotations(clazz); @SuppressWarnings("unchecked") //将XML字符串转为bean对象 T t = (T) xStream.fromXML(xml); return t; } /** * 对象转xml * * @param obj 对象 * @return */ public static String toXml(Object obj) { XStream xStream = new XStream(new DomDriver()); xStream.processAnnotations(obj.getClass()); return xStream.toXML(obj); } }
3、demo
3.1、子类
import com.thoughtworks.xstream.annotations.XStreamAlias; import lombok.Data; @Data @XStreamAlias("user") public class Xuser { @XStreamAlias("user") private String user; @XStreamAlias("message") private String message; }
3.2、列表类
import com.thoughtworks.xstream.annotations.XStreamAlias; import lombok.Data; import java.util.List; @Data @XStreamAlias("root") public class XList { @XStreamAlias("users") private List<Xuser> users; }
3.3、main
public static void main(String[] args) throws Exception { String xml = "<root>\n" + "<users>\n" + "<user>\n" + " <user>zhangsan</user>\n" + " <message>success</message>\n" + "</user>\n" + "<user>\n" + " <user>lisi</user>\n" + " <message>fail</message>\n" + "</user>\n" + "</users>\n" + "</root>\n"; XList obj = XmlUtils.parseFromXml(XList.class, xml); log.info("{}", obj); String s = XmlUtils.toXml(obj); log.info("{}", s); }
3.4、输出结果
XList(users=[Xuser(user=zhangsan, message=success), Xuser(user=lisi, message=fail)])
<root>
<users>
<user>
<user>zhangsan</user>
<message>success</message>
</user>
<user>
<user>lisi</user>
<message>fail</message>
</user>
</users>
</root>
有些事情,没经历过不知道原理,没失败过不明白奥妙,没痛苦过不了解真谛。临渊羡鱼,不如退而结网!

浙公网安备 33010602011771号