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

时间:2022-10-14 05:45:18

创建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