Spring Boot使用dom4j处理xml数据

一、引入

java 复制代码
<dependency>
    <groupId>org.dom4j</groupId>
    <artifactId>dom4j</artifactId>
    <version>2.1.4</version>
</dependency>

二、使用

java 复制代码
Document document = DocumentHelper.createDocument();
Element datainfo = DocumentHelper.createElement("ela");
document.setRootElement(datainfo);
Element elb = datainfo.addElement("elb");
elb.addElement("a").setText("1.6");
System.out.println(document.asXML());
bash 复制代码
#打印结果
<?xml version="1.0" encoding="UTF-8"?>
<ela>
  <elb>
    <a>1.6</a>
  </elb>
</ela>

三、特殊字符处理

当需要在xml手动添加一段xml数据时,会发现<>被解析了

java 复制代码
elb.addElement("b").setText("<c>2.3</c>");
bash 复制代码
#打印结果
<?xml version="1.0" encoding="UTF-8"?>
<ela>
  <elb>
    <a>1.6</a>
    <b>&lt;c&gt;2.3&lt;/c&gt;</b>
  </elb>
</ela>
java 复制代码
    /**
     * 格式化XML文档
     * @param document xml文档
     * @param charset  字符串的编码
     * @param istrans  是否对属性和元素值进行转移
     * @return  格式化后XML字符串
     */
    public static String formatXml(Document document, String charset, boolean istrans)
    {
        OutputFormat format = OutputFormat.createPrettyPrint();
        format.setEncoding(charset);
        StringWriter sw = new StringWriter();
        XMLWriter xw = new XMLWriter(sw, format);
        xw.setEscapeText(istrans);
        try {
            xw.write(document);
            xw.flush();
            xw.close();
        } catch (IOException e) {
            System.out.println("格式化XML文档发生异常,请检查!");
            e.printStackTrace();
        }
        return sw.toString();
    }
java 复制代码
System.out.println(formatXml(document, "GBK", false));
bash 复制代码
#打印结果
<?xml version="1.0" encoding="GBK"?>
<ela>
  <elb>
    <a>1.6</a>
    <b><c>2.3</c></b>
  </elb>
</ela>
相关推荐
AI 编程助手GPT3 小时前
GPT 脚本别只发一个文件:用 uv 把依赖和锁一起交付
人工智能·python·gpt·uv·依赖管理
Patrick在香港4 小时前
第 16,216 次连接之后,它不干了
python·网络编程·socket·tcp·连接池
我命由我123454 小时前
Python 开发 - Python 虚拟环境
运维·开发语言·后端·python·http·https·java-ee
云和数据.ChenGuang4 小时前
LLM大模型对接本地Ollama部署模型
开发语言·人工智能·python·langchain
云和数据.ChenGuang5 小时前
光哥说Python 循环导入(Circular Import)深度解析:成因、排查与解决方案
开发语言·前端·人工智能·python·langchain
TomEval5 小时前
【测AI】第16篇:模型公平性与可解释性测试 — AI 的偏见与黑箱
人工智能·python·功能测试·ai·测试用例
田里的水稻5 小时前
FA_CNN卷积神经网络四---线性层及其拉平PyTorch
人工智能·pytorch·python·深度学习·神经网络·cnn
钱栈up5 小时前
GitHub热榜上手|Claude插件:4.3万星官方目录
python·开源·github
青春不朽5125 小时前
Python 的 list append 为什么是均摊 O(1)?拆开过度分配那张表,看容量翻倍背后的暗账
java·python·list
小羊没烦恼!6 小时前
.NET 11 Runtime Async 详解
java·运维·开发语言·javascript·python