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

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

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇