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>

  

JavaEE XML DOM创建之DOM4J的更多相关文章

  1. JavaEE XML DOM解析之DOM4J

    DOM解析之DOM4J @author ixenos DOM4J常用API 读取xml文档: Document doc = new SAXReader().read("xml文件" ...

  2. JavaEE XML DOM创建

    DOM创建XML @author ixenos 1.思路: 先封装构建一颗DOM树,然后将DOM树转换成XML文件 2.三种写DOM树到XML文件的方式: 1)使用DOM(或DOM4J.JDOM) 2 ...

  3. JavaEE XML DOM解析

    DOM解析XML @author ixenos XML解析方式(原理) a)     DOM 解析树 b)     SAX  流事件 DOM解析对应主流工具 i.          DOM(官方) i ...

  4. JavaEE XML StAX创建

    StAX创建XML文档 @author ixenos 1. 如果通过DOM树来创建XML文件时,发现这个DOM树没有其他用途,那么这种方式就不是很高效,这时我们可以使用StAX API直接将XML树写 ...

  5. PHP中利用DOM创建xml文档

    DOM创建xml文档 用dom创建如下文档: <booklist> <book id="1"> <title>天龙八部</title> ...

  6. 使用DOM创建xml文件

    使用DOM创建xml文件 创建xml的代码如下: public class CreateXML { public static void main(String[] args) { DocumentB ...

  7. 打造完美的xml技术解决方案(dom4j/xstream)

    转: XML 技术是随着 Java 的发展而发展起来的.在 XML 出现之前对于简单的数据格式通常是存储在 ini 配置文件等文本文件中,复杂的格式则采用自定义的文件格式,因此对于每种文件格式都要有专 ...

  8. XML学习笔记(2)--dom4j操作XML

    1. 介绍(四种方式的比较这部分转载自:http://www.blogjava.net/xcp/archive/2010/02/12/312617.html) 1)DOM(JAXP Crimson解析 ...

  9. JavaEE XML XPath

    JavaEE XML XPath @author ixenos XPath技术 1 引入 问题:当使用dom4j查询比较深的层次结构的节点(标签,属性,文本),比较麻烦!!!需要遍历DOM树的众多节点 ...

随机推荐

  1. 关于如何惟一地标识一台Android设备的综合性讨论

    想必大家在开发Android项目的时候,多多少少会遇到“如何惟一地标识一台Android设备”等类似的问题.不只是以前,即使是现在乃至可以预见的将来,这个问题都将一直存在. 如果大家使用搜索工具搜索的 ...

  2. linux创建进程和等待进程退出

    在WIN32下,在一个进程里我们可以使用CreateProcess()创建一个进程,然后通过调用WaitForSingleObect(), WaitForMultipleObject()等待进程退出. ...

  3. 大数据工具篇之Hive与HBase整合完整教程

    大数据工具篇之Hive与HBase整合完整教程 一.引言 最近的一次培训,用户特意提到Hadoop环境下HDFS中存储的文件如何才能导入到HBase,关于这部分基于HBase Java API的写入方 ...

  4. 企业架构研究总结(38)——TOGAF架构能力框架之架构能力建设和架构治理

    为了确保架构功能在企业中能够被成功地运用,企业需要通过建立适当的组织结构.流程.角色.责任和技能来实现其自身的企业架构能力,而这也正是TOGAF的架构能力框架(Architecture Capabil ...

  5. vs2015开发Windows服务

    工作已经很久,时隔这么长时间写这篇文章是给自己以后做参考.也不至于以后长时间不写Windows服务而忘记整个开发过程.windows服务开发,基础的就不说了,直接上过程. 1.新建windows服务项 ...

  6. 理解的javascript自定义事件

    理解的javascript自定义事件 被我拖延了将近一个月的javascript事件模型系列终于迎来了第四篇,也是我计划中的最后一篇,说来太惭愧了,本来计划一到两个星期写完的,谁知中间遇到了很多事情, ...

  7. 实现Launcher编辑模式(1) 壁纸更换

    Android Launcher分析和修改13——实现Launcher编辑模式(1) 壁纸更换 Posted on 2013-09-11 23:25 泡泡糖 阅读(212) 评论(3) 编辑 收藏 已 ...

  8. (Java 多线程系列)java volatile详解

    在前面的文章里面介绍了synchronized关键字的用法,这篇主要介绍volatile关键字的用法. Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其它 ...

  9. sqlserver 注释提取工具

    小程序大智慧,sqlserver 注释提取工具 开篇背景 我习惯在写表的创建脚本时将注释直接写在脚本里,比如 ? /*账套*/ CREATE TABLE [dbo].[AccountingBook] ...

  10. ngx-push-stream模块源码学习(五)——内存清理

    1.定时器         采用nginx自身的定时器管理机制,具体细节待学习过nginx源码后加以补充 2.channel的生成周期 (0).初始(诞生)         发布.订阅均有可能产生ch ...