当前位置: 首页 > news >正文

DOM4J解析XML, 修改xml的值

1. 引入pom依赖

<dependency>
    <groupId>org.dom4j</groupId>
    <artifactId>dom4j</artifactId>
    <version>2.1.3</version>
</dependency>

2. 解析xml, 修改xml节点的值

import org.apache.commons.io.IOUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.List;

public class Dom4jParseUserXmlTest { 
	
	
    //业务数据xml格式
	public static String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
            "<DATA>\n" +
            "    <HEAD>\n" +
            "        <BIZID>AD03-1713863079</BIZID>\n" +
            "        <COUNT>1</COUNT>\n" +
            "        <CONSUMER>app</CONSUMER>\n" +
            "    </HEAD>\n" +
            "    <BODY>\n" +
            "        <ITEM>\n" +
            "            <CUST_NAME>张三</CUST_NAME>\n" +
            "            <CUST_SEX>0</CUST_SEX>\n" +
            "            <CUST_MOBILE>17812345678</CUST_MOBILE>\n" +
            "        </ITEM>\n" +
            "    </BODY>\n" +
            "</DATA>";
   
    public static void main(String[] args) { 
    	
        //创建解析器对象
        SAXReader saxReader=new SAXReader();
        try { 
            InputStream inputStream = IOUtils.toInputStream(
            		new String(xml), StandardCharsets.UTF_8.name()); 
            Document document = saxReader.read(inputStream);
            Element rootElement = document.getRootElement();
            System.out.println("1.------->root:"+rootElement.getName());

            System.out.println("2.------->获取root子标签列表");
            List<Element> usersSubElementList = rootElement.elements();
            for (Element userElement : usersSubElementList) { 
   
                System.out.println("DATA标签的子标签的名字是"+ userElement.getName());
                System.out.println("3.------->获取"+ userElement.getName() +"的子标签列表");
                List<Element> userSubElementList = userElement.elements();
                
                for (Element userSubElement : userSubElementList) { 
                	 if("BIZID".equals(userSubElement.getName())) {
                         //修改节点值
                		 userSubElement.setText("111111111111111111111111111");
                	 }
                     System.out.println("标签下的子标签名为:"+userSubElement.getName());
                     System.out.println("标签下的子标签文本是:"+userSubElement.getText());
                }
            }
//            //获取users标签的第一个标签
//              Element firstUserElement = rootElement.element("user");
//            //第一个user标签的子标签password的文本内容
//              String password = firstUserElement.attributeValue("password");
//              System.out.println(password);
        } catch (DocumentException e) { 
            e.printStackTrace();
        }
    }
}

3. 换个思路, XML转json, 然后解析json

3.1 用 Jackson 库

Jackson 是一个强大的 JSON 处理库,它也支持 XML 到 JSON 的转换。

  1. 添加 Jackson 依赖(Maven):

    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
        <version>2.15.0</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.15.0</version>
    </dependency>

  2. 实现代码:

    import com.fasterxml.jackson.databind.JsonNode;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.dataformat.xml.XmlMapper;
    
    public class XmlToJsonConverter {
    
        public static String convertXmlToJson(String xml) throws Exception {
            // 创建 XmlMapper 实例
            XmlMapper xmlMapper = new XmlMapper();
            // 将 XML 字符串解析为 JsonNode
            JsonNode node = xmlMapper.readTree(xml.getBytes());
            // 创建 ObjectMapper 实例
            ObjectMapper jsonMapper = new ObjectMapper();
            // 将 JsonNode 转换为 JSON 字符串
            return jsonMapper.writerWithDefaultPrettyPrinter().writeValueAsString(node);
        }
    
        public static void main(String[] args) {
            String xml = "<person><name>John Doe</name><age>30</age></person>";
            try {
                String json = convertXmlToJson(xml);
                System.out.println("JSON Output:\n" + json);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

输出:

{
  "person" : {
    "name" : "John Doe",
    "age" : "30"
  }
}

3.2 使用 org.json 库

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20231013</version>
</dependency>

代码

        // 示例XML字符串

        String xmlString= "<person><name>John Doe</name><age>30</age></person>";

        // 将XML转换为JSON
        JSONObject jsonObject = XML.toJSONObject(xmlString);
        String jsonString = jsonObject.toString(4); // 4是缩进空格数,用于美化输出
        System.out.println(jsonString);

相关文章:

  • Springboot+mybait查询功能撰写
  • prometheus自定义监控(pushgateway和blackbox)和远端存储VictoriaMetrics
  • 深度解析React Native底层核心架构与演进之路
  • 零基础keil:设置注释快捷键
  • 【RNN神经网络】序列模型与RNN神经网络
  • 2.创建QT项目
  • 算法——层序遍历和中序遍历构造二叉树
  • 前端小食堂 | Day15 - VueUse 魔法道具库
  • 【NLP 40、残差神经网络】
  • Windows下安装MongoDB 8
  • 【数据分析】读取文档(读取Excel)
  • Flux 文生图技术解析与部署实践
  • Python 魔法方法介绍
  • 网络安全常识科普(百问百答)
  • 每日Attention学习26——Dynamic Weighted Feature Fusion
  • 双指针算法专题之——有效三角形的个数
  • 《Python深度学习》第二讲:深度学习的数学基础
  • 老牌软件,方便处理图片,量大管饱。
  • 4大观点直面呈现|直播回顾-DeepSeek时代的AI算力管理
  • 《灵珠觉醒:从零到算法金仙的C++修炼》卷三·天劫试炼(35)山河社稷图展开 - 编辑距离(字符串DP)
  • 网站文章发布/b站怎么推广
  • 最超值的赣州网站建设/百度快照官网登录
  • 工信部网站备案批准文件/软文范例大全500字
  • 如何制作网站板块/哪个平台可以免费推广
  • 东莞企业vi设计/快速排名优化
  • 网站域名需要备案吗/全网营销平台