<grandParent>
<parent>
<child>Sam/Astronaut</child>
</parent>
</grandParent>
我想通过在父标记内添加另一个子标记来修改上述XML。我正在做这样的事情。
tree = ET.parse("test.xml")
a=ET.Element('parent')
b=ET.SubElement(a,"child")
b.text="Jay/Doctor"
tree.write("test.xml")
这是修改xml文件的正确方法吗?还有更好的方法吗?还是上面代码中我还要注意什么?
您的代码将创建一棵全新的树并将Jay添加到其中。您需要将Jay连接到现有树,而不是新树。
尝试这个:
import xml.etree.ElementTree as ET
tree = ET.parse("test.xml")
a = tree.find('parent') # Get parent node from EXISTING tree
b = ET.SubElement(a,"child")
b.text = "Jay/Doctor"
tree.write("test.xml")
如果要搜索特定的孩子,可以执行以下操作:
import xml.etree.ElementTree as ET
tree = ET.parse("test.xml")
a = tree.find('parent')
for b in a.findall('child'):
if b.text.strip() == 'Jay/Doctor':
break
else:
ET.SubElement(a,"child").text="Jay/Doctor"
tree.write("test.xml")
注意a.findall()
(类似于a.find()
,但是返回所有命名元素)。xml.etree
已经非常有限的搜索条件。您可以考虑使用lxml.etree
及其.xpath()
方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句