Поиск тегов XML и вставка новых тегов в определенную позицию в Python3 с использованием xml.etree.ElementTree - PullRequest
0 голосов
/ 24 января 2019

У меня есть пример файла следующего формата.

Исходные данные 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)

1 Ответ

0 голосов
/ 28 января 2019

Это исправило мою проблему.

for element in root.iter('nametag'):
    new_subelement = ET.Element("newtag", value1 ="1", value2="2")
    element.append(new_subelement)

tree.write('output.xml')

Это запишет необходимые данные XML в новый файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...