Java创建xml文档笔记(DOM,DOM4J)

创建xml文档的工具类:CreateXmlUtil.java

package com.maple.util;

import java.io.File;
import java.io.FileWriter;
import java.text.SimpleDateFormat;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.dom4j.DocumentHelper;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

import com.maple.domain.Employee;

/**
 * CreateXmlUtil.java
 * @author 小建枫叶 2012-9-2 上午11:30:18
 *
 * TODO 创建xml文件(DOM,DOM4J)
 */
public final class CreateXmlUtil {

	private CreateXmlUtil() {
	}
	
	/**
	 * DOM方式创建xml文档
	 * 步骤:
	 * 1.创建空白xml文档
	 * 2.为xml添加元素,设置元素的属性或文本内容
	 * 3.保存xml文档到硬盘(保存的时候要两个参数,一个是dom资源,一个是结果输出流)
	 * 
	 * 注意:
	 * 通过这种方式创建好的xml文档不是美化的格式,
	 * 而是所有内容都在一行上的,是非常紧凑的(可以理解为压缩版),
	 * 阅读性不是很好。
	 * @param employee
	 */
	public static void createXMLbyDOM(Employee employee) {
		try {
			//创建一个空白的xml文档
			DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
			DocumentBuilder documentBuilder = builderFactory.newDocumentBuilder();
			Document document = documentBuilder.newDocument(); //在内存中新创建一个xml文档
			
			//为xml文档添加内容
			Element rootElement = document.createElement("employees"); //创建根元素,只有document对象才可以创建元素
			document.appendChild(rootElement);  //将根元素添加到xml文档中
			
			Element employeeElement = document.createElement("employee"); //创建employee子元素
			employeeElement.setAttribute("id", employee.getId());//为该节点设置属性和值
			rootElement.appendChild(employeeElement);//添加到根元素上
			
			Element nameElement = document.createElement("name");
			nameElement.setTextContent(employee.getName()); //设置该节点的文本内容
			employeeElement.appendChild(nameElement);
			
			Element ageElement = document.createElement("age");
			ageElement.setTextContent(employee.getAge().toString()); //设置该节点的文本内容
			employeeElement.appendChild(ageElement);
			
			Element sexElement = document.createElement("sex");
			sexElement.setTextContent(employee.getSex()); //设置该节点的文本内容
			employeeElement.appendChild(sexElement);
			
			SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
			Element birthdayElement = document.createElement("birthday");
			birthdayElement.setTextContent(dateFormat.format(employee.getBirthday())); //设置该节点的文本内容
			employeeElement.appendChild(birthdayElement);
			
			//保存xml文档到硬盘上
			TransformerFactory transformerFactory = TransformerFactory.newInstance();
			Transformer transformer = transformerFactory.newTransformer();
			Source xmlSource = new DOMSource(document); //根据内存中的xml文档创建一个资源
			Result outputTarget = new StreamResult(new File("F://employees.xml")); //以流的方式输出到目的地,即保存路径   这里写死了保存路径
			transformer.transform(xmlSource, outputTarget);//第一个参数:要保存的资源  第二个参数:保存的目的地
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	
	/**
	 * DOM4J方式创建xml文档
	 * 
	 * 步骤:
	 * 1.创建空白的xml文档
	 * 2.添加元素,用法类StringBuilder类型
	 * 3.保存xml文档到硬盘(可以指定输出格式)
	 * @param employee
	 */
	public static void createXMLbyDOM4J(Employee employee) {
		org.dom4j.Document document = DocumentHelper.createDocument(); //创建一个空白的xml文档
		org.dom4j.Element rootElement = document.addElement("employees"); //添加根节点
		//添加employee节点并设置属性和值
		org.dom4j.Element employeeElement = rootElement.addElement("employee").addAttribute("id", employee.getId()); 
		//添加name节点并设置文本内容
		employeeElement.addElement("name").addText(employee.getName());
		employeeElement.addElement("age").addText(employee.getAge().toString());
		employeeElement.addElement("sex").addText(employee.getSex());
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
		employeeElement.addElement("birthday").addText(dateFormat.format(employee.getBirthday()));
		
		//保存xml文档到硬盘
        try {
        	/*
        	// 输出指定文件,无格式化
            XMLWriter writer = new XMLWriter(new FileWriter("F:/employees.xml"));
            writer.write(document );
            writer.close();
            */
        	
           // 美化格式
            OutputFormat format = OutputFormat.createPrettyPrint();
            XMLWriter writer = new XMLWriter(new FileWriter("F:/employees.xml"), format);
            writer.write(document);
            writer.close();
            
        	/*
            // 缩减格式
        	OutputFormat format = OutputFormat.createCompactFormat();
        	XMLWriter writer = new XMLWriter(new FileWriter("F:/employees.xml"), format);
        	writer.write(document);
            writer.close();
        	*/
        } catch (Exception e) {
            e.printStackTrace();
        } 

	}
}

源代码下载地址:http://download.csdn.net/detail/xiaojianfengye1/4542763





你可能感兴趣的:(XML及DOM编程)