Python xml.etree.ElementTree 添加没有控制台输出的子元素

问题描述 投票:0回答:2

我想在不将内容写入控制台的情况下将子元素添加到 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 子元素?

python elementtree
2个回答
0
投票

您可以使用 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')

0
投票

感谢您的所有意见。 简单的答案是

dump()
append()
都不需要被调用。写入文件时,将包含
SubElement
方法添加的所有子元素。 由于文档示例以及您无法通过
get()
方法访问添加的子元素这一事实,我感到困惑。

© www.soinside.com 2019 - 2024. All rights reserved.