主要的包:dom4j-1.6.1.jar
一、将xml字符串转换为javaBean
1、xml字符串如下:
- <WorkItemInfos>
- <WorkItem>
- <appellation>500605</appellation>
- <name>李萍</name>
- <ReceiveTime>2015-08-03 10:10:56</ReceiveTime>
- <FinishTime></FinishTime>
- </WorkItem>
- <WorkItem>
- <appellation>201021</appellation>
- <name>李晶晶</name>
- <ReceiveTime>2015-08-03 10:10:56</ReceiveTime>
- <FinishTime></FinishTime>
- </WorkItem>
- </WorkItemInfos>
2、将xml字符串转换为Document文档对象:
- /**
- * 根据字符串创建 document 对象
- * @param xmlStr
- * @return
- */
- public static Document getDocumentByString(String xmlStr){
- Document doc = null;
- try {
- doc = DocumentHelper.parseText(xmlStr);
- } catch (DocumentException e) {
- logger.error("字符串转换成XML失败:" + e.getMessage());
- }
- return doc;
- }
3、将Document文档对象转换为javaBean:
- /**
- *
- * @desc 解析xml
- * @param xml串
- * @throws Exception
- * @date 2015年4月16日 下午5:13:03
- */
- private List<FlowAuditDetail> parseXml(String xml) throws Exception{
- //方法返回的javaBean集合
- List<FlowAuditDetail> list = new ArrayList<FlowAuditDetail>();
- try {
- //根据字符串创建 document对象
- Document document = XMLUtil.getDocumentByString(xml);
- if(null == document){
- return null;
- }
- /*
- * 下面这个循环,目的是解析Document对象
- */
- //获取根元素
- Element rootElement = document.getRootElement();
- //获取根元素下面的元素集合[WorkItem]
- Iterator<Element> iter = rootElement.elementIterator("WorkItem");
- while (iter.hasNext()) {
- Element element = (Element) iter.next();
- //分别获取元素[appellation、name.....]的文本值
- String appellation = element.elementTextTrim("appellation");
- String name = element.elementTextTrim("name");
- String ReceiveTime = element.elementTextTrim("ReceiveTime");
- String FinishTime = element.elementTextTrim("FinishTime");
- //对javaBean[FlowAuditDetail]进行赋值
- FlowAuditDetail d = new FlowAuditDetail();
- d.setAppellation(appellation);
- d.setName(name);
- if(StringUtils.isNotNull(ReceiveTime)){
- System.out.println(ReceiveTime+"===========");
- Date date = sdf.parse(ReceiveTime);
- d.setReceivetime(date);
- }
- if(StringUtils.isNotNull(FinishTime)){
- Date date = sdf.parse(FinishTime);
- d.setFinishtime(date);
- }
- d.setCreatetime(new Date());
- list.add(d);
- }
- } catch (Exception e) {
- System.out.println("解析xml出错了!!");
- throw new Exception("解析xml出错了!!"+e.toString());
- }
- return list;
- }
二、将xml解析成Document对象的工具类
- package com.openeap.common.utils;
- import java.io.InputStream;
- import org.apache.log4j.Logger;
- import org.dom4j.Document;
- import org.dom4j.DocumentException;
- import org.dom4j.DocumentHelper;
- import org.dom4j.io.SAXReader;
- /**
- * dom4j 解析XML工具类
- *
- */
- public class XMLUtil {
- private static final Logger logger = Logger.getLogger(XMLUtil.class);
- /**
- * 文件路径创建 document 对象
- *
- * @param path
- * @return
- */
- public static Document getDocumentByPath(String path) {
- Document doc = null;
- try {
- SAXReader reader = new SAXReader();
- doc = reader.read(path);
- } catch (DocumentException e) {
- logger.error("读取XML失败:" + e.getMessage());
- }
- return doc;
- }
- /**
- * 输入流创建 document 对象
- *
- * @param path
- * @return
- */
- public static Document getDocumentByInputStream(InputStream in) {
- Document doc = null;
- try {
- SAXReader reader = new SAXReader();
- doc = reader.read(in);
- } catch (DocumentException e) {
- logger.error("读取XML失败:" + e.getMessage());
- }
- return doc;
- }
- /**
- * classpath创建 document 对象
- *
- * @param path classpath
- * @return
- */
- public static Document getDocumentByClasspath(String path) {
- Document doc = null;
- try {
- SAXReader reader = new SAXReader();
- doc = reader.read(Thread.currentThread().getContextClassLoader().getResourceAsStream(path));
- } catch (DocumentException e) {
- logger.error("读取XML失败:" + e.getMessage());
- }
- return doc;
- }
- /**
- * 字符串创建 document 对象
- * @param xmlStr
- * @return
- */
- public static Document getDocumentByString(String xmlStr){
- Document doc = null;
- try {
- doc = DocumentHelper.parseText(xmlStr);
- } catch (DocumentException e) {
- logger.error("字符串转换成XML失败:" + e.getMessage());
- }
- return doc;
- }
- }