如何用Python将XML转换为字典 xmltodict库用法

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

xmltodict 将 XML 转成 Python 字典是最简洁可靠的方式,它能自动处理嵌套、属性、文本内容等常见结构,无需手动解析。

安装与基本用法

先通过 pip 安装库:

pip install xmltodict

最简单的转换只需一行代码:

import xmltodict
xml_str = "Alice30"
data = xmltodict.parse(xml_str)

结果是标准的嵌套字典:{'root': {'name': 'Alice', 'age': '30'}}。注意:XML 中的文本值默认为字符串,数字不会自动转类型。

处理 XML 属性和文本混合内容

当标签既有属性又有文本时(如 book),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=" " 自定义缩进符。注意:反向生成不保留原始注释或处理指令。