JavaEE XML DOM创建之DOM4J

DOM4J创建xml文档

 @author ixenos

 

 

              1 写出内容到xml文档

                                    XMLWriter writer = new XMLWriter(OutputStream, OutputForamt)

                                    wirter.write(Document);

      

            OutputFormat format = OutputFormat.createPrettyPrint();

            format.setEncoding("GBK");

            // 生成xml文件

            File file = new File("rssnews.xml");

            XMLWriter writer = new XMLWriter(new FileOutputStream(file), format);

            //设置是否转义,默认值是true,代表转义

            writer.setEscapeText(false);

            writer.write(document);

            writer.close();

 

              2 修改xml文档的API

                           增加:

                                             DocumentHelper.createDocument()  增加文档

                                             addElement("名称")  增加标签

                                             addAttribute("名称",“值”)  增加属性

                           修改:

                                             Attribute.setValue("值")  修改属性值

      //addAttribute为标签添加属性和属性值。根据XML约定,若value为null,则attr属性不存在,这可用于删除属性

                                             Element.addAtribute("同名的属性名","值")  修改同名的属性值

                                             Element.setText("内容")  修改文本内容

                           删除

                                             Element.detach();  删除标签 

                                             Attribute.detach();  删除属性

 

 

 

示例


package com.ixenos.dom4j;

import java.io.FileOutputStream;

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

/**
 * 使用DOM4J的API生成XML文件
 * 
 * @author ixenos
 *
 */
public class CreateXML {

	/**
	 * 封装DOM树
	 * 
	 * @param file
	 * @throws Exception
	 */
	public Document getDOM() throws Exception {
		// 生成一个空的Document对象
		Document doc = DocumentHelper.createDocument();

		// 手动装入标签、属性、文本
		// 根标签
		Element rootE = doc.addElement("Students");

		// 第一个子标签
		Element firE = rootE.addElement("Student");
		firE.addAttribute("id", "1");
		// 第一个子标签的子
		firE.addElement("name").addText("张三");
		firE.addElement("gender").addText("男");
		firE.addElement("grade").addText("物联网一般");
		firE.addElement("address").addText("广州白云");

		// 第二个子标签
		Element secE = rootE.addElement("Student");
		secE.addAttribute("id", "2");
		// 第一个子标签的子
		secE.addElement("name").addText("李四");
		secE.addElement("gender").addText("女");
		secE.addElement("grade").addText("物联网二班");
		secE.addElement("address").addText("广州海珠");
		return doc;
	}

	/**
	 * 将DOM树输出为XML文件
	 * 
	 * @throws Exception
	 */
	public static void writeXML(Document doc, Boolean pretty, String encoding) throws Exception {
		// 创建文件输出流,定向所要生成的文件路径
		FileOutputStream out = new FileOutputStream("demo.xml");
		
		// 创建OutputFormat,作为写到XML的格式化选项
		// 为了调试可视化,我们需要OutputFormat.createPrettyPrint()
		// 为了传输的高效化,我们需要Outputormat.create.createCompactFormat()
		OutputFormat format = null;
		if (pretty) {
			format = OutputFormat.createPrettyPrint();
		} else {
			format = OutputFormat.createCompactFormat();
		}
		// 设置XML文件指定编码
		format.setEncoding(encoding);

		// 创建XMLWriter,将DOM树写到XML中,注意格式化问题
		XMLWriter writer = new XMLWriter(out, format);
		writer.write(doc);
		writer.close();
	}

	public static void main(String[] args) throws Exception {
		CreateXML demo = new CreateXML();
		//生成DOM树
		Document doc = demo.getDOM();
		//根据DOM树生成XML
		writeXML(doc, true, "utf-8");
	}

}

  

<?xml version="1.0" encoding="utf-8"?>

<Students>
  <Student id="1">
    <name>张三</name>
    <gender>男</gender>
    <grade>物联网一般</grade>
    <address>广州白云</address>
  </Student>
  <Student id="2">
    <name>李四</name>
    <gender>女</gender>
    <grade>物联网二班</grade>
    <address>广州海珠</address>
  </Student>
</Students>

  

posted @ 2017-01-13 14:21  ixenos  阅读(265)  评论(0编辑  收藏  举报