如何使用Python的xml.etree.ElementTree为XML节点添加属性?
用xml.etree.ElementTree生成带属性的XML元素
你需要给<Invoice>元素添加属性,而非误用tail属性(tail用于定义元素结束标签后的文本内容),以下是两种正确实现方式:
方法1:创建元素时直接指定属性
import xml.etree.ElementTree as gfg def GenerateXML(fileName): # 创建Element时通过关键字参数传入属性 root = gfg.Element("Invoice", test="how can i generate this ?") # 设置text为换行符,让元素生成单独的开始/结束标签(而非自闭合标签) root.text = '\n' tree = gfg.ElementTree(root) with open(fileName, "wb") as files: tree.write(files, encoding='utf-8')
方法2:使用set()方法添加属性
import xml.etree.ElementTree as gfg def GenerateXML(fileName): root = gfg.Element("Invoice") # 调用set方法添加属性 root.set("test", "how can i generate this ?") root.text = '\n' tree = gfg.ElementTree(root) with open(fileName, "wb") as files: tree.write(files, encoding='utf-8')
说明
- 你之前的错误是误用了
tail属性:它会把内容放在元素闭合标签之后,所以才生成了<Invoice />test="how can i generate this ?"的错误结果。 - 设置
root.text = '\n'是为了让ElementTree生成单独的<Invoice>...</Invoice>标签(默认无内容时会生成自闭合的<Invoice />),这样输出格式就和你期望的一致了。
运行上述代码后,生成的XML内容为:
<Invoice test="how can i generate this ?"> </Invoice>
内容的提问来源于stack exchange,提问作者Selman
相关产品推荐
相关产品推荐

