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>
相关推荐
带娃的IT创业者1 天前
Python 异步编程完全指南:从入门到精通
服务器·开发语言·python·最佳实践·asyncio·异步编程
朱包林1 天前
Python基础
linux·开发语言·ide·python·visualstudio·github·visual studio
Eward-an1 天前
【算法竞赛/大厂面试】盛最多水容器的最大面积解析
python·算法·leetcode·面试·职场和发展
no_work1 天前
基于python预测含MLP决策树LGBM随机森林XGBoost等
python·决策树·随机森林·cnn
进击的雷神1 天前
地址语义解析、多语言国家匹配、动态重试机制、混合内容提取——德国FAKUMA展爬虫四大技术难关攻克纪实
爬虫·python
FreakStudio1 天前
一行命令搞定驱动安装!MicroPython 开发有了自己的 “PyPI”包管理平台!
python·stm32·单片机·嵌入式·arm·电子diy
小浪花a1 天前
计算机二级python-jieba库
开发语言·python
Storynone1 天前
【Day23】LeetCode:455. 分发饼干,376. 摆动序列,53. 最大子序和
python·算法·leetcode
J2虾虾1 天前
在SpringBoot中使用Druid
java·spring boot·后端·druid
田里的水稻1 天前
ubuntu22.04_构建openclaw开发框架
运维·人工智能·python