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

Python中如何去除根节点将XML转换为JSON?

解决Python中XML文件转无根节点JSON的问题

没问题,我来帮你搞定这个需求!你已经选对了xmljson的Parker规则,只是还差一步——学会读取本地XML文件,而不是直接传入XML字符串。下面是完整的实现方案:

核心思路

  1. 用xml.etree.ElementTree的parse()方法加载本地XML文件(替代处理字符串的fromstring())
  2. 跳过外层的<root>节点,直接定位到里面的<row>节点——这才是你要转成JSON的核心内容
  3. 可选优化:把原本是数字类型的字段(比如Member_ID、Age)从字符串转为整数,让JSON格式和你给出的示例完全匹配

完整代码示例

from xmljson import parker
from xml.etree.ElementTree import parse
from json import dumps

# 替换成你的XML文件实际路径
xml_file_path = "member_data.xml"

# 1. 读取并解析XML文件
tree = parse(xml_file_path)
root = tree.getroot()

# 2. 获取目标<row>节点(如果XML里有多个row,用root.findall('row')循环处理即可)
row_node = root.find('row')

# 3. 用Parker规则将XML节点转换为字典
raw_data = parker.data(row_node)

# 4. 处理数据类型转换:把可转为整数的字段从字符串转成int
processed_data = {}
for key, value in raw_data.items():
    try:
        processed_data[key] = int(value)
    except ValueError:
        # 无法转成整数的字段(比如Height、Date)保持原字符串
        processed_data[key] = value

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

关键细节说明

  • parse(xml_file_path):直接加载本地XML文件并生成ElementTree对象,比手动读取文件再转字符串更简洁高效
  • root.find('row'):从根节点<root>中定位到第一个<row>节点;如果你的XML包含多条<row>数据,改用root.findall('row')遍历,就能生成包含多个对象的JSON数组
  • 数据类型转换:XML中的所有内容默认都是字符串类型,我们通过try-except判断,把能转成整数的字段自动转换,让最终的JSON结构更贴合你的需求

运行代码后,输出的JSON就是你想要的无根节点格式:

{
  "Member_ID": 926494,
  "First_Name": "Corissa",
  "Last_Name": "Aguiler",
  "Gender": "F",
  "Age": 39,
  "Height": "5,3",
  "Weight": 130,
  "Hours_Sleep": 8,
  "Calories_Consumed": 2501,
  "Exercise_Calories_Burned": 990,
  "Date": "9/11/2017"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:59:37