xmltodict默认将XML属性转为@key形式,如@id、@category;可通过attr_prefix参数自定义前缀或忽略;含文本和属性的标签用#text键存文本;命名空间和多值属性按原样处理。

xmltodict 默认会把 XML 属性转为以 @ 开头的键名,嵌套在对应元素的字典中。这是它的核心约定,不是 bug,而是设计选择。
@key 形式比如这段 XML:
<book id="123" category="fiction"> <title>Python Guide</title> </book>
用 xmltodict.parse() 解析后,结果是:
{
"book": {
"@id": "123",
"@category": "fiction",
"title": "Python Guide"
}
}所有属性都自动加了 @ 前缀,和子元素同级,避免命名冲突。
立即学习“Python免费学习笔记(深入)”;
通过 attr_prefix 参数可修改前缀:
attr_prefix="" → 属性直接用原名(但可能和子元素名冲突)attr_prefix="_" → 变成 _id、_category
attr_prefix=None → 属性被忽略(不推荐,除非明确不需要)示例:
xmltodict.parse(xml_str, attr_prefix="_")
输出中就变成 "_id": "123"。
如果一个标签既有属性又有纯文本,xmltodict 会用 #text 键存文本:
<price currency="USD">29.99</price>
解析后是:
{"price": {"@currency": "USD", "#text": "29.99"}}注意:#text 是固定键名,不可通过参数更改;若需统一处理,建议解析后手动提取或封装一层转换逻辑。
xmltodict 对命名空间(如 xmlns:xsi)也按属性处理,带 @ 前缀;多值属性(如 class="a b c")不做拆分,原样保留为字符串。
elem.get("@class", "").split()
xml.etree.ElementTree 预处理,再转 dict以上就是Python xmltodict怎么处理XML属性的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号