主要的包: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;
}
}