XML 和 JavaBean 的互转---org.dom4j.Document

前端之家收集整理的这篇文章主要介绍了XML 和 JavaBean 的互转---org.dom4j.Document前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

主要的包:dom4j-1.6.1.jar

一、将xml字符串转换为javaBean

1、xml字符串如下:

  1. <WorkItemInfos>
  2. <WorkItem>
  3. <appellation>500605</appellation>
  4. <name>李萍</name>
  5. <ReceiveTime>2015-08-03 10:10:56</ReceiveTime>
  6. <FinishTime></FinishTime>
  7. </WorkItem>
  8. <WorkItem>
  9. <appellation>201021</appellation>
  10. <name>李晶晶</name>
  11. <ReceiveTime>2015-08-03 10:10:56</ReceiveTime>
  12. <FinishTime></FinishTime>
  13. </WorkItem>
  14. </WorkItemInfos>


2、将xml字符串转换为Document文档对象:

  1. /**
  2. * 根据字符串创建 document 对象
  3. * @param xmlStr
  4. * @return
  5. */
  6. public static Document getDocumentByString(String xmlStr){
  7. Document doc = null;
  8. try {
  9. doc = DocumentHelper.parseText(xmlStr);
  10. } catch (DocumentException e) {
  11. logger.error("字符串转换成XML失败:" + e.getMessage());
  12. }
  13. return doc;
  14. }


3、将Document文档对象转换为javaBean:

  1. /**
  2. *
  3. * @desc 解析xml
  4. * @param xml串
  5. * @throws Exception
  6. * @date 2015年4月16日 下午5:13:03
  7. */
  8. private List<FlowAuditDetail> parseXml(String xml) throws Exception{
  9. //方法返回的javaBean集合
  10. List<FlowAuditDetail> list = new ArrayList<FlowAuditDetail>();
  11. try {
  12. //根据字符串创建 document对象
  13. Document document = XMLUtil.getDocumentByString(xml);
  14. if(null == document){
  15. return null;
  16. }
  17. /*
  18. * 下面这个循环,目的是解析Document对象
  19. */
  20. //获取根元素
  21. Element rootElement = document.getRootElement();
  22. //获取根元素下面的元素集合[WorkItem]
  23. Iterator<Element> iter = rootElement.elementIterator("WorkItem");
  24. while (iter.hasNext()) {
  25. Element element = (Element) iter.next();
  26. //分别获取元素[appellation、name.....]的文本值
  27. String appellation = element.elementTextTrim("appellation");
  28. String name = element.elementTextTrim("name");
  29. String ReceiveTime = element.elementTextTrim("ReceiveTime");
  30. String FinishTime = element.elementTextTrim("FinishTime");
  31. //对javaBean[FlowAuditDetail]进行赋值
  32. FlowAuditDetail d = new FlowAuditDetail();
  33. d.setAppellation(appellation);
  34. d.setName(name);
  35. if(StringUtils.isNotNull(ReceiveTime)){
  36. System.out.println(ReceiveTime+"===========");
  37. Date date = sdf.parse(ReceiveTime);
  38. d.setReceivetime(date);
  39. }
  40. if(StringUtils.isNotNull(FinishTime)){
  41. Date date = sdf.parse(FinishTime);
  42. d.setFinishtime(date);
  43. }
  44. d.setCreatetime(new Date());
  45. list.add(d);
  46. }
  47. } catch (Exception e) {
  48. System.out.println("解析xml出错了!!");
  49. throw new Exception("解析xml出错了!!"+e.toString());
  50. }
  51. return list;
  52. }


二、将xml解析成Document对象的工具类

  1. package com.openeap.common.utils;
  2.  
  3. import java.io.InputStream;
  4.  
  5. import org.apache.log4j.Logger;
  6. import org.dom4j.Document;
  7. import org.dom4j.DocumentException;
  8. import org.dom4j.DocumentHelper;
  9. import org.dom4j.io.SAXReader;
  10.  
  11. /**
  12. * dom4j 解析XML工具类
  13. *
  14. */
  15. public class XMLUtil {
  16.  
  17. private static final Logger logger = Logger.getLogger(XMLUtil.class);
  18.  
  19. /**
  20. * 文件路径创建 document 对象
  21. *
  22. * @param path
  23. * @return
  24. */
  25. public static Document getDocumentByPath(String path) {
  26. Document doc = null;
  27. try {
  28. SAXReader reader = new SAXReader();
  29. doc = reader.read(path);
  30. } catch (DocumentException e) {
  31. logger.error("读取XML失败:" + e.getMessage());
  32. }
  33. return doc;
  34. }
  35. /**
  36. * 输入流创建 document 对象
  37. *
  38. * @param path
  39. * @return
  40. */
  41. public static Document getDocumentByInputStream(InputStream in) {
  42. Document doc = null;
  43. try {
  44. SAXReader reader = new SAXReader();
  45. doc = reader.read(in);
  46. } catch (DocumentException e) {
  47. logger.error("读取XML失败:" + e.getMessage());
  48. }
  49. return doc;
  50. }
  51. /**
  52. * classpath创建 document 对象
  53. *
  54. * @param path classpath
  55. * @return
  56. */
  57. public static Document getDocumentByClasspath(String path) {
  58. Document doc = null;
  59. try {
  60. SAXReader reader = new SAXReader();
  61. doc = reader.read(Thread.currentThread().getContextClassLoader().getResourceAsStream(path));
  62. } catch (DocumentException e) {
  63. logger.error("读取XML失败:" + e.getMessage());
  64. }
  65. return doc;
  66. }
  67. /**
  68. * 字符串创建 document 对象
  69. * @param xmlStr
  70. * @return
  71. */
  72. public static Document getDocumentByString(String xmlStr){
  73. Document doc = null;
  74. try {
  75. doc = DocumentHelper.parseText(xmlStr);
  76. } catch (DocumentException e) {
  77. logger.error("字符串转换成XML失败:" + e.getMessage());
  78. }
  79. return doc;
  80. }
  81.  
  82. }

猜你在找的XML相关文章