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

Python中如何遍历字典为XML元素批量添加多组属性键值对

你原来的代码逻辑问题在于:循环中每次调用ET.SubElement都会生成一个全新的<field1>元素,所以最终会得到3个各自仅带1个属性的field1节点,而非你想要的单个携带所有字典键值对作为属性的field1节点。

推荐实现方式(字典解包传参)

创建元素时直接用**语法解包字典,一次性传入所有属性,代码最简洁:

import xml.etree.ElementTree as ET

d = {
    "a": "1",
    "b": "2",
    "c": "what"
}

root = ET.Element("root")
child = ET.SubElement(root, "child")
# 解包字典作为属性参数
field1 = ET.SubElement(child, "field1", **d)
field1.text = "some value1"

tree = ET.ElementTree(root)
tree.write("logs/filename.xml")

循环添加属性的实现方式

如果需要在添加属性时做额外的逻辑处理(比如属性名/值转换、过滤),可以先创建空元素,再遍历字典逐个添加属性:

import xml.etree.ElementTree as ET

d = {
    "a": "1",
    "b": "2",
    "c": "what"
}

root = ET.Element("root")
child = ET.SubElement(root, "child")
field1 = ET.SubElement(child, "field1")
for k, v in d.items():
    # 逐个设置属性
    field1.set(k, v)
field1.text = "some value1"

tree = ET.ElementTree(root)
tree.write("logs/filename.xml")

两种方案最终生成的XML内容均符合你的预期:

<root><child><field1 a="1" b="2" c="what">some value1</field1></child></root>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:09:02