Python中如何去除根节点将XML转换为JSON?
解决Python中XML文件转无根节点JSON的问题
没问题,我来帮你搞定这个需求!你已经选对了xmljson的Parker规则,只是还差一步——学会读取本地XML文件,而不是直接传入XML字符串。下面是完整的实现方案:
核心思路
- 用
xml.etree.ElementTree的parse()方法加载本地XML文件(替代处理字符串的fromstring()) - 跳过外层的
<root>节点,直接定位到里面的<row>节点——这才是你要转成JSON的核心内容 - 可选优化:把原本是数字类型的字段(比如
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
相关产品推荐
相关产品推荐

