JavaSE_XML解析__DOM4j_XML写入

来源:互联网 发布:java float 比较大小 编辑:程序博客网 时间:2024/06/10 18:54

一、创建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();

}

}

}


1 0
原创粉丝点击