我有一个以下格式的示例文件。
原始XML数据:
<nametag dummy1 ="YES" dummy2 ="PASS THROUGH" >
<PARTITION DESCRIPTION ="" NAME ="Partition #1"/>
<PARTITION DESCRIPTION ="" NAME ="Partition #2"/>
<PARTITION DESCRIPTION ="" NAME ="Partition #3"/>
<PARTITION DESCRIPTION ="" NAME ="Partition #4"/>
<PARTITION DESCRIPTION ="" NAME ="Partition #5"/>
<PARTITION DESCRIPTION ="" NAME ="Partition #6"/>
</nametag>
目标:
<nametag dummy1 ="YES" dummy2 ="PASS THROUGH" >
<PARTITION DESCRIPTION ="" NAME ="Partition #1"/>
<PARTITION DESCRIPTION ="" NAME ="Partition #2"/>
<PARTITION DESCRIPTION ="" NAME ="Partition #3"/>
<PARTITION DESCRIPTION ="" NAME ="Partition #4"/>
<PARTITION DESCRIPTION ="" NAME ="Partition #5"/>
<PARTITION DESCRIPTION ="" NAME ="Partition #6"/>
<newtag value=1 value=2/>
</nametag>
我能够通过整个文档并找到,甚至能够通过标签传递。我的要求是找到最后一个标签,并添加一个新的标签元素,如上面给出的Target xml中所述。订单项的数量并不总是相同的,因此通过固定的迭代进行循环将不起作用。
我将不得不找到最后一个标签,然后在其后插入“”。
需要查找其最后一个标签。 我能够使用类似于以下代码的代码来解析xml文件。
import xml.etree.ElementTree as ET
tree = ET.parse('some.xml')
root = tree.getroot()
for partition in root.iter('PARTITION'):
partitiondetail = partition.get('NAME')
if partitiondetail == 'somepattern':
print(partitiondetail)
答案 0 :(得分:0)
这解决了我的问题。
for element in root.iter('nametag'):
new_subelement = ET.Element("newtag", value1 ="1", value2="2")
element.append(new_subelement)
tree.write('output.xml')
这会将所需的xml数据写入一个新文件中。