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"));
    }

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

相关推荐
Predestination王瀞潞14 小时前
2.4 编码->W3C XML 1.0标准(W3C Recommendation):XML(Extensible Markup Language)
xml·前端
青槿吖1 天前
【保姆级教程】Spring事务控制通关指南:XML+注解双版本,避坑指南全奉上
xml·java·开发语言·数据库·sql·spring·mybatis
北京聚信万通科技有限公司2 天前
Odette OFTP2 Group1/2/3深度解读:PDX XML能力划分与选型指南
xml·edi·电子数据交换·as2·国产软件·oftp2
小趴蔡ha4 天前
如何将XML格式标注文件转换为YOLO格式进行目标检测训练(附代码)
xml·yolo·目标检测
__Yvan4 天前
解决ConstraintLayout中LinearLayout显示异常问题
android·xml·约束布局
weixin_307779134 天前
构建健壮的XML文档抓取与摘要流水线:Requests + urllib3.Retry + lxml 实践
xml·开发语言·python·算法·性能优化
kgduu4 天前
js之xml处理
xml·前端·javascript
aisifang005 天前
使用 Logback 的最佳实践:`logback.xml` 与 `logback-spring.xml` 的区别与用法
xml·spring·logback
小江的记录本6 天前
【Spring Boot—— .yml(YAML)】Spring Boot中.yml文件的基础语法、高级特性、实践技巧
xml·java·spring boot·后端·spring·spring cloud·架构
青槿吖6 天前
第二篇:告别XML臃肿配置!Spring注解式IOC/DI保姆级教程,从入门到真香
xml·java·开发语言·数据库·后端·sql·spring