我正在编写一个python代码,以便在ID匹配的情况下插入一个子元素。我试图插入到下一行,但它恰好添加到与我的ID匹配的同一个节点中
import xml.etree.ElementTree as ET
import re
XMLFILE = "sample.xml"
mytree = ET.parse(XMLFILE)
myroot = mytree.getroot()
global update
id = "C0"
for attr in myroot.iter():
ver_name= attr
if(ver_name.tag == 'name'):
update=ver_name
if(attr.tag == 'ID'):
if(re.match(attr.text,id)):
new_name = 'CAT'
update.text= str(new_name)
nm = ET.SubElement(attr, "name")
nm.text="peris"
mytree.write(XMLFILE)
输入xml:
<api nu ="F7">
<name>CAT</name>
<ID>C0</ID>
</api>
预期产出:
<api nu ="F7">
<name>CAT</name>
<ID>C0</ID>
<name>peris</name>
</api>
实际产量:
<api nu ="F7">
<name>CAT</name>
<ID>C0<name>peris</name></ID>
</api>
如有任何见解,将不胜感激
您正在
attr
元素上(即下面)添加一个子元素,因此不知道为什么您会对该元素添加到下面感到惊讶对于XML,您只需使用:
一般来说,如果更难找到,例如在层次结构的较低位置,而不是使用
iter
,我会使用:或者,如果您只想检查包含名称的api:
绝对值得学习ElementTree xpathhttps://docs.python.org/3/library/xml.etree.elementtree.html?highlight=xpath-首先让findall只使用xpath的第一部分,例如.//api,一旦完成该部分工作,就添加xpath的下一部分,例如.//api/name
相关问题 更多 >
编程相关推荐