java dom4j处理xml添加document删除document
package org.xqlee.utils.xml;

import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

/**
 * 
 * 
 * <pre>
 * _________________________INFO_____________________________
 * | Description : [dom4j处理xml] 
 * | Encoding    : [UTF-8]
 * | Package     : [org.xqlee.utils.xml.test]
 * | Project     : [utils]
 * | Author      : [LXQ]
 * | CreateDate  : [2016年3月23日上午11:14:35]
 * | Updater     : []
 * | UpdateDate  : []
 * | UpdateRemark: []
 * | Company     : [www.zhljc.com]
 * | Version     : [v 1.0]
 * | Libs        : [dom4j-1.6.1.jar xml-apis-1.0b2.jar jaxen-1.1.6.jar]
 * __________________________________________________________
 * </pre>
 */
public class Dom4j {

	public static void main(String[] params) {
		System.out.println("=====1.开始生产xml=====");
		String xml = createXML();
		System.out.println("=====2.结束生产xml=====");
		System.out.println("=====3.第一次解析=====");
		String2XML(xml);
		System.out.println("=====4.第二次解析");
		xml=" "+xml;//注意xml文档的<?xml version="1.0" encoding="GBK"?>前面不允许有其他值
		String2XML(xml);
		
	}

	/**
	 * 创建xml
	 * 
	 * @return xml文档字符串
	 */
	public static String createXML() {
		System.out.println("============xml创建===============");
		// 1.创建文档
		Document doc = DocumentHelper.createDocument();
		// 设置文件编码格式
		doc.setXMLEncoding("GBK");
		// 2.文档中添加节点||注意文档中只能有一个root节点
		Element root = doc.addElement("ROOT");
		root.addAttribute("root", "http://www.zhljc.com");
		// 头部
		Element header = root.addElement("HEADER");
		header.addAttribute("header", "http://zhljc.com");

		header.addElement("HPARAM1").addText("Header param 1");
		header.addElement("HPARAM2").addText("Header param 2");
		// fields
		Element f1 = header.addElement("field");
		f1.addAttribute("name", "F1");
		f1.addText("0000f2");

		Element f2 = header.addElement("field");
		f2.addAttribute("name", "F2");
		f2.addText("0000f2");

		Element f3 = header.addElement("field");
		f3.addAttribute("name", "F3");
		f3.addText("0000f3");

		// body
		Element body = root.addElement("BODY");
		body.addAttribute("body", "http://www.zhljc.com");

		body.addElement("BPARAM1").addText("Body param 1");
		body.addElement("BPARAM2").addText("Body param 2");

		// 3.转换为字符集的xml
		String xml = doc.asXML();
		System.out.println("xml1:\n" + xml);
		return xml;

	}

	/**
	 * 解析xml
	 * 
	 * @param xml
	 *            字符串的xml参数
	 */
	public static void String2XML(String xml) {
		System.out.println("============xml解析===============");
		try {
			// 转换
			Document doc = DocumentHelper.parseText(xml);
			// 获取节点内容
			String headerParam1Text = doc.selectSingleNode("/ROOT/HEADER/HPARAM1").getText();
			System.out.println("节点ROOT->HEADER->HPARAM1的值为:" + headerParam1Text);

			@SuppressWarnings("unchecked")
			List<Element> ns = doc.selectNodes("/ROOT/HEADER/field");
			System.out.println("通过属性名称查询节点TEXT值:"+getTextByAttribute(ns,"name","F1"));

		} catch (DocumentException e) {
			System.out.println("转换异常:" + e.getMessage());
			e.printStackTrace();
		}
	}
	
	public static String getTextByAttribute(List<Element> nodes, String attributeName, String attributeValue) {
		for (Element node : nodes) {
			if (node.attributeValue(attributeName).equals(attributeValue)) {
				return node.getText();
			}
		}
		return null;
	}

}