xml和Bean相互转换

雨点打透心脏的1/2处 2024-03-31 11:18 124阅读 0赞

1.引入包

  1. <dependency>
  2. <groupId>com.thoughtworks.xstream</groupId>
  3. <artifactId>xstream</artifactId>
  4. <version>1.4.9</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>dom4j</groupId>
  8. <artifactId>dom4j</artifactId>
  9. <version>1.6.1</version>
  10. </dependency>

2.Java代码

  1. import com.thoughtworks.xstream.XStream;
  2. import org.dom4j.Document;
  3. import org.dom4j.DocumentHelper;
  4. /**
  5. * XML工具类
  6. */
  7. public class XmlUtil {
  8. private static XStream xStream = new XStream();
  9. /**
  10. * 解析xml
  11. * @param xml xml字符串
  12. * @param elementName 要解析的父标签
  13. * @param cls 目标类型
  14. * @return 解析结果
  15. */
  16. public static <T> T xmlToBean(String xml, String elementName, Class<T> cls) {
  17. T object = null;
  18. try {
  19. Document document = DocumentHelper.parseText(xml);
  20. //如果不是SOAP返回的报文,是XML字符串则不需要这行代码
  21. String beanXml = document.getRootElement().element("Body").element(
  22. elementName).asXML();
  23. xStream.alias(elementName, cls);
  24. object = (T) xStream.fromXML(beanXml);
  25. } catch (Exception e) {
  26. e.printStackTrace();
  27. }
  28. return object;
  29. }
  30. /**
  31. * 转换XML
  32. * 对象添加 @XStreamAlias("标签名称")
  33. * 集合添加 @XStreamImplicit(itemFieldName="标签名称")
  34. * 否则会出现解析的xml中标签带类全称现象
  35. * @param object 要转换的对象
  36. * @return 结果字符串
  37. */
  38. public static String beanToXml(Object object) {
  39. xStream.processAnnotations(object.getClass()); // 应用注解
  40. xStream.autodetectAnnotations(true); //自动检测注解
  41. return xStream.toXML(object);
  42. }
  43. }

3.验证

  1. public static void main(String[] args) {
  2. String json ="";
  3. List<T> packages = new ArrayList<T>();
  4. packages = JSONObject.parseObject(json,new TypeReference<List<T>>() {});
  5. xStream.alias("res", List.class);
  6. String xml = XmlUtil.beanToXml(packages);
  7. System.out.println("xml:"+xml);
  8. }

发表评论

表情:
评论列表 (有 0 条评论,124人围观)

还没有评论,来说两句吧...

相关阅读