一、创建Document文档:利用ElementHelper的工具类
-------a) Document document = ElementHelper.creatDocument();
二、在内存中重建DOM树结构
-------a) 定义一个根元素:ElementHelper.creatElement(“元素名”);
--------------i. Element rootElement = ElementHelper.creatElement(“student2”);
-------b) 在根节点的基础上创建一级子节点:ElementHelper.crearElement(“元素名”)
--------------i. Element stuElement = ElementHelper.creatElement(“stu”);
--------------ii. 可以给一级元素添加属性:stuElement.addAttribute(“属性”,”值”);
--------------iii. stuElement.addAttribute(“属性”,”值”);
-------c) 在二级元素添加三级元素(最后一级元素默认为属性): ElementHelper.creatElement(“元素名”)
--------------i. 创建元素----属性
---------------------1. Element nameElement = ElementHelper.creatElement(“name”);
---------------------2. Element ageElement = ElementHelper.creatElement(“age”);
---------------------3. Element addressElement = ElementHelper.creatElement(“address”);
--------------ii. 给元素添加属性 setText(“值”);
---------------------1. nameElement.setText(“李超”)
---------------------2. ageElemenet.setText(“23”);
---------------------3. addressElement.setText(“酒泉”);
三、向Document文本中添元素(一级一级逐一添加):
-------a) 向Document-------添加根元素:document.add(根元素);
--------------i. Document.add(rootElement);
-------b) 向根元素---------添加一级子属性rootElement.add(一级子元素);
--------------i. rootElement.add(stuElement);
-------c) 向一级子属性----------添加二级子属性:stuElement.add(二级子元素);
--------------i. stuElement.add(nameElement);
--------------ii. stuElement.add(ageElement);
--------------iii. stuElement.add(addressElement);
四、写入到XML文档:XmlWriter writer = new XmlWriter(OutputStream,format)-输出流和格式
-------a) 创建输出流:bufferedWriter
--------------i. BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileWriter(new File(“地址”))));
-------b) 创建格式:OutputFormat format = new OutputFormat(缩进,是否换行);
--------------i. OutputFormat format = new OutputFormat(“\t”,true);
--------------ii. 可以指定编码字符集:
---------------------1. format.setEnoding(“字符编码”);------format.setEnoding(“gb2312”);
-------c) 创建XML对象:XMLWriter writer = newXMLWriter(OutputStream,format);
--------------i. XMLWriter writer = new XMLWriter(bw,format);
-------d) 写出document: writer.writer(document);
--------------i. writer.writer(document);
--------------ii. Writer.flush();
--------------iii. Writer.close();
实例:
package com.lichao.java4j;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
/**
* <student2>
* <stu id = "120120">
* <name>李超</name>
* <age>23</age>
* <address>酒泉</address>
* </stu>
* </studnet2>
* ***/
public class CreateXml {
public static void main(String[] args) {
//1.创建一个Document的对象表示内存中的DOM树
Document document = DocumentHelper.createDocument();
//2.在内存中重构Dom书
//2.1 创建Dom树的根元素
Element rootElement = DocumentHelper.createElement("student2");
//2.2创建根元素的子元素
Element stuElement = DocumentHelper.createElement("stu");
//2.3给子元素添加属性
stuElement.addAttribute("id", "120120");
//2.4给相对子元素创建叶属性
Element nameElement = DocumentHelper.createElement("name");
Element ageElement = DocumentHelper.createElement("age");
Element addressElement = DocumentHelper.createElement("address");
//给页属性赋值
nameElement.setText("李超");
ageElement.setText("23");
addressElement.setText("酒泉");
/***
* 添加进DOM树----添加进document文档--
* **/
//添加根元素
document.add(rootElement);
//给元素添加属性
rootElement.add(stuElement);
//给学生属性添加属性
stuElement.add(nameElement);
stuElement.add(ageElement);
stuElement.add(addressElement);
/**
* 将在内存中绘制的DOM树 写入到XML文本中
*/
try {
//制定换行和空格
OutputFormat format = new OutputFormat("\t",true);
format.setEncoding("gb2312");
//创建输出文本和输出流对象
XMLWriter writer = new XMLWriter(
new BufferedWriter(
new FileWriter(
new File("D:\\WorkSpace\\Java4j\\src\\student2.xml"))),format);
writer.write(document);
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}