You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将指定XML转换为JSON:键名大写且采用无多映射循环的简便方法

将XML转换为键名大写的JSON(简便实现)

输入XML

<employees>
 <employee>
   <id>
     <name>Mohan</name>
     <dept>Admin</dept>
   </id>
   <id>
     <name>ravi</name>
     <dept>Network</dept>
   </id>
  </employee>
</employees>

实现思路

利用XML解析库的内置处理器在解析阶段直接将键名转为大写,避免后续多轮循环映射。以Python的xmltodict库为例,通过传入自定义postprocessor函数,在解析每个节点时同步转换键名,同时配置force_list确保重复节点(如多个<id>)被解析为数组。

代码实现

import xmltodict
import json

def uppercase_key_postprocessor(path, key, value):
    # 将节点键名转为大写,返回处理后的键值对
    return key.upper(), value

xml_content = """
<employees>
 <employee>
   <id>
     <name>Mohan</name>
     <dept>Admin</dept>
   </id>
   <id>
     <name>ravi</name>
     <dept>Network</dept>
   </id>
  </employee>
</employees>
"""

# 解析XML,配置强制列表和自定义处理器
result_dict = xmltodict.parse(
    xml_content,
    postprocessor=uppercase_key_postprocessor,
    force_list={'ID'}
)

# 转换为格式化的JSON字符串
json_result = json.dumps(result_dict, indent=2)
print(json_result)

输出结果

{
  "EMPLOYEES": {
    "EMPLOYEE": {
      "ID": [
        {
          "NAME": "Mohan",
          "DEPT": "Admin"
        },
        {
          "NAME": "ravi",
          "DEPT": "Network"
        }
      ]
    }
  }
}

关键说明

  • postprocessor函数在解析每个XML节点时触发,直接修改键名为大写,无需后续遍历整个字典做映射,实现一步到位。
  • force_list={'ID'}指定<id>节点强制转为数组,避免单个节点时被解析为普通对象、多个节点时才转为数组的不一致问题。

内容的提问来源于stack exchange,提问作者deepuKumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 21:05:23