使用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
相关产品推荐
相关产品推荐

