Итерация по XML с деревом элементов и обновление текста из списка - PullRequest
0 голосов
/ 15 февраля 2019

Итак, я чувствую, что это может быть основным упущением от моего имени.Но я застрял на правильном обновлении текстового поля XML со значениями из списка.У меня есть список с 4 элементами source = ['a', 'b', 'c', 'd'].Я могу перебрать XML и найти текстовые значения, которые мне нужно обновить (упрощенная версия ниже).Я не могу понять, как перебирать subfields так, чтобы subfield.text обновлялся для значений в источнике.

Я пробовал -

for s in source:
    for su in root.iter('subfield'):
        if su.items()[-1][1] == 'Target':
            su.text = s # this makes all values d 
            print(su.text)

"""<field align="left" seq="1" type="text">aqwe
       <subfield align="left" name="Target" type="text"/>
   </field>
   <field align="left" seq="1" type="text">fghg
       <subfield align="left" name="Target" type="text"/>
   </field>
   <field align="left" seq="1" type="text">fdad
       <subfield align="left" name="Target" type="text"/>
   </field>
   <field align="left" seq="1" type="text">asdf
       <subfield align="left" name="Target" type="text"/>
   </field>
"""

В идеалеэто будет:

"""<field align="left" seq="1" type="text">aqwe
       <subfield align="left" name="Target" type="text"/>a
   </field>
   <field align="left" seq="1" type="text">fghg
       <subfield align="left" name="Target" type="text"/>b
   </field>
   <field align="left" seq="1" type="text">fdad
       <subfield align="left" name="Target" type="text"/>c
   </field>
   <field align="left" seq="1" type="text">asdf
        <subfield align="left" name="Target" type="text"/>d
   </field>
"""
...