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

使用xmltodict将XML转JSON时遭遇Expat语法错误求助

XML转JSON时Expat语法错误的解决办法

核心问题:xmltodict.parse()方法需要传入XML内容字符串,而非文件路径。你直接传入"abc.xml",程序会把文件名当作XML文本解析,自然触发语法错误。

原代码问题点

import xmltodict, json

def main():
    o = xmltodict.parse("abc.xml")  # 错误:传入文件名而非XML内容
    json.dumps(o)

if __name__ == "__main__":
    main()

修复后的代码(两种可行方式)

方式一:手动读取文件内容后解析

import xmltodict, json

def main():
    # 读取XML文件的内容
    with open("abc.xml", "r", encoding="UTF-8") as f:
        xml_content = f.read()
    
    # 解析XML内容为字典
    xml_dict = xmltodict.parse(xml_content)
    
    # 转换为格式化的JSON字符串
    json_str = json.dumps(xml_dict, indent=4, ensure_ascii=False)
    
    # 打印结果或保存到文件
    print(json_str)
    with open("output.json", "w", encoding="UTF-8") as f:
        f.write(json_str)

if __name__ == "__main__":
    main()

方式二:直接传入文件对象给parse方法

部分版本的xmltodict支持直接传入打开的文件对象,代码更简洁:

import xmltodict, json

def main():
    with open("abc.xml", "r", encoding="UTF-8") as f:
        xml_dict = xmltodict.parse(f)
    
    json_str = json.dumps(xml_dict, indent=4, ensure_ascii=False)
    print(json_str)

if __name__ == "__main__":
    main()

你的abc.xml内容是合法的XML格式,修复代码后即可正常完成XML到JSON的转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 13:24:56