Python生成XML时闭合标签带属性的问题如何解决?
解决ElementTree生成带属性XML标签的闭合标签错误问题
错误原因分析
- 若将属性直接拼接到标签名(如
'Item lineNumber="1"'),会导致ElementTree把整个字符串当作标签名,生成错误的闭合标签</Item lineNumber="1">。 - 直接传字符串作为属性参数会触发
TypeError,因为ET.SubElement的第三个参数要求是字典类型,而非字符串。
正确代码写法
使用字典传递属性键值对,ElementTree会自动生成正确的带属性起始标签和纯净的闭合标签:
import xml.etree.ElementTree as ET # 父元素示例(根据你的实际代码替换) element0items = ET.Element("Items") # 正确创建带lineNumber属性的<Item>子元素 element0itemline1 = ET.SubElement(element0items, 'Item', {'lineNumber': '1'}) # 验证输出(可选) ET.dump(element0items)
输出效果
生成的XML片段为:
<Items> <Item lineNumber="1"></Item> </Items>
闭合标签是符合要求的</Item>,不会携带任何属性。
额外说明
如果属性值包含特殊字符(如引号),无需手动转义(比如不用写"),ElementTree会自动处理转义逻辑,确保XML格式合法。
内容的提问来源于stack exchange,提问作者Alex Co
相关产品推荐
相关产品推荐

