xmltodict 是将 XML 转为 Python 字典最简洁可靠的方式,支持嵌套、属性、文本混合解析,并提供 unparse() 反向生成 XML;需注意编码、类型转换及自定义键名等细节。

用 xmltodict 将 XML 转成 Python 字典是最简洁可靠的方式,它能自动处理嵌套、属性、文本内容等常见结构,无需手动解析。
安装与基本用法
先通过 pip 安装库:
pip install xmltodict
最简单的转换只需一行代码:
立即学习“Python免费学习笔记(深入)”;
import xmltodictxml_str = "data = xmltodict.parse(xml_str)
结果是标准的嵌套字典:{'root': {'name': 'Alice', 'age': '30'}}。注意:XML 中的文本值默认为字符串,数字不会自动转类型。
处理 XML 属性和文本混合内容
当标签既有属性又有文本时(如 ),xmltodict 默认把属性存为 @attr 键,文本存为 #text 键:
{"item": {"@id": "101", "#text": "book"}}
如需自定义键名,可用参数指定:
-
attr_prefix='_'→ 属性变为_id -
cdata_key='text'→ 文本内容键改为text -
force_list=('item',)→ 强制将item解析为列表(即使只有一个)
读取文件与处理中文/特殊字符
从文件读取时,注意编码(尤其含中文的 XML):
with open("data.xml", "r", encoding="utf-8") as f: xml_content = f.read()data = xmltodict.parse(xml_content)
如果 XML 声明了编码(如 ),建议用 open(..., encoding="gb2312") 显式指定,避免乱码或解析失败。
反向操作:字典转 XML
用 xmltodict.unparse() 可将字典还原为格式化的 XML 字符串:
xml_str = xmltodict.unparse(data, pretty=True)
pretty=True 会自动缩进换行,便于查看;也可加 indent=" " 自定义缩进符。注意:反向生成不保留原始注释或处理指令。










