Hutool XML工具-XmlUtil遇到标签问题

在处理XML时,Hutool是一个非常实用的Java工具库,它提供了便捷的XML操作方法。

如果你在使用Hutool的XmlUtil工具类时遇到了标签类型问题,可能是因为XML结构复杂或特定标签的处理需求。

我遇到了一个稍复杂的xml结构,如下:

xml 复制代码
<user type="GROUP">
	<user_id>247692d5c9d278af</user_id>
	<name>漳平市菁城街道双拥路304城北小区二期A1栋1单元10楼1001号</name>
	<age>181</age>
</user>
  • hutool包
xml 复制代码
    <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>${hutool.version}</version>
    </dependency>

标签type="GROUP",如果返回记录只有一条的情况下,通过XmlUtil.xmlToMap转换时,返回的是user对象,而不是一个集合!

咋整呢。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

  • 先将XML格式字符串转换为json,将json中符合要求的转换为集合,如下:
java 复制代码
  String returnString = "";
  JSONObject jsonObject = JSONUtil.parseFromXml(returnString);
  //将json中符合要求的转换为集合
  normalizeJson(jsonObject);
  //其他业务处理
  • 检查json中是否需要转为数组的标签,以type="GROUP" 为例,代码如下:
java 复制代码
    /**
     * 转换数组
     *
     * @param json json对象
     */
    private static void normalizeJson(JSONObject json) {
        for (String key : json.keySet()) {
            Object value = json.get(key);

            if (value instanceof JSONObject) {
                // 检查是否需要转为数组
                JSONObject obj = (JSONObject) value;
                if (shouldConvertToArray(obj)) {
                    JSONArray array = new JSONArray();
                    array.add(obj);
                    json.set(key, array);
                } else {
                    normalizeJson(obj);
                }
            } else if (value instanceof JSONArray) {
                // 处理数组中的对象
                JSONArray array = (JSONArray) value;
                for (Object item : array) {
                    if (item instanceof JSONObject) {
                        normalizeJson((JSONObject) item);
                    }
                }
            }
        }
    }

    /**
     * 根据标识判断是否需要转换数组
     *
     * @param obj json对象
     */
    public static boolean shouldConvertToArray(JSONObject obj) {
    // 根据你的业务逻辑判断
    // 例如:特定类型或特定属性
    return obj.containsKey("type") && "GROUP".equals(obj.getStr("type"));
    }

已解决我想要的结果,如果有伙伴有其他方案,可以一起交流下!

相关推荐
介一安全17 小时前
【Web安全】XML注入全手法拆解
xml·web安全·安全性测试
2301_818732064 天前
项目启动报错,错误指向xml 已解决
xml·java·数据库·后端·springboot
csdn2015_5 天前
generatorConfig.xml 配置 Controller、Service 完整教程
xml·mybatis
特立独行的猫a5 天前
从XML到Compose的UI变革:现代(2026)Android开发指南
android·xml·ui·compose·jetpack
spencer_tseng5 天前
Stream not available [SysDictDataMapper.xml]
xml·java
qq_297574676 天前
MySQL迁移到瀚高数据库 常用转换函数对照表(附XML示例,直接复用)
xml·数据库·mysql
好好研究7 天前
SpringBoot整合SpringMVC
xml·java·spring boot·后端·mvc
从此不归路8 天前
Qt5 进阶【12】JSON/XML 数据协议处理:与后端/配置文件的对接
xml·开发语言·c++·qt·json
方芯半导体9 天前
EtherCAT “通信 + 控制“ 的全国产化控制方案,ESC芯片(FCE1323)与国产MCU芯片功能板解析
xml·网络·单片机·嵌入式硬件·网络协议·机器人·自动化
好好研究9 天前
总结SSM设置欢迎页的方式
xml·java·后端·mvc