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>
相关推荐
2401_88445415几秒前
mysql如何处理大量重复值索引_mysql索引存储特征分析
jvm·数据库·python
kexnjdcncnxjs10 分钟前
SQL批量删除不同条件的记录_使用IN子句简化删除逻辑
jvm·数据库·python
2303_8212873813 分钟前
如何安装Oracle 12c Cloud Control_OMS服务端组件与Agent部署
jvm·数据库·python
Be reborn13 分钟前
用例不是孤立执行的:依赖、变量池与 storage_state 设计
python·自动化·pytest
m0_6091604915 分钟前
React Flow 边缘错位与消失问题的根源分析与 Hooks 重构方案
jvm·数据库·python
Marvel__Dead15 分钟前
微调 Gemma 4 识别腾讯天御全系列验证码【解决方案-一个模型识别 滑块|文字点选|图标点选|空间点选】
人工智能·爬虫·python·验证码识别·ai 大模型
weixin_4440129316 分钟前
CSS怎样调整弹性项目排列顺序_使用order属性轻松控制DOM显示顺序
jvm·数据库·python
程序员阿明17 分钟前
spring boot + vue3 实现RSA加密解密
java·spring boot·后端
iuvtsrt18 分钟前
SQL处理分组聚合时的NULL值处理_利用NVL函数
jvm·数据库·python
dinglu1030DL25 分钟前
CSS如何利用Flex实现悬浮的侧边按钮组_利用fixed定位与flex布局组合
jvm·数据库·python