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();  删除属性

 

 

 

示例


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
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");
    }
 
}

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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 @   ixenos  阅读(269)  评论(0编辑  收藏  举报
编辑推荐:
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
阅读排行:
· C# 13 中的新增功能实操
· Ollama本地部署大模型总结
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(4)
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 用一种新的分类方法梳理设计模式的脉络
点击右上角即可分享
微信分享提示