我想在不将内容写入控制台的情况下将子元素添加到 XML 文件。
我正在执行以下操作以将子元素添加到 XML 文件:
import xml.etree.ElementTree as ET
tree=ET.parse('myfile.XML')
root=tree.getroot()
vpn=ET.SubElement(root,'VPN', attrib={'A': 'VPN1', 'B':'0','C': '0.0001', 'D': '0', 'E': '%'})
ET.dump(root)
这是它应该做的。但是
ET.dump()
正在将 XML 内容写入控制台,这对于更大的 XML 结构是有问题的。
无论如何,这里的文档有点奇怪。因为一方面 documentation(请参阅“构建 XML 文档”一章)说
dump()
应该用于添加子元素。另一方面,dump()
方法的 documentation表明该方法只能用于调试,这解释了为什么将内容打印到控制台。
如何在控制台中没有内容的情况下添加 XML 子元素?
您可以使用 root.append(vpn) 而不是 ET.dump(root) 这不会写入控制台。
import xml.etree.ElementTree as ET
tree=ET.parse('myfile.XML')
root=tree.getroot()
vpn=ET.SubElement(root,'VPN', attrib={'A': 'VPN1', 'B':'0','C': '0.0001', 'D': '0', 'E': '%'})
# ET.dump(root)
root.append(vpn)
#To dump the data into a file:
tree = ET.ElementTree(root)
tree.write('xml_filename.xml')
感谢您的所有意见。 简单的答案是
dump()
和 append()
都不需要被调用。写入文件时,将包含 SubElement
方法添加的所有子元素。
由于文档示例以及您无法通过 get()
方法访问添加的子元素这一事实,我感到困惑。