通过带有元素树的XML进行迭代并从列表中更新文本

时间:2019-02-15 17:16:40

标签: python xml elementtree

所以,我觉得这也许是我的基本监督。但是,我坚持使用列表中的值正确更新XML文本字段。我有一个包含4个元素的列表source = ['a', 'b', 'c', 'd']。我可以遍历XML并找到需要更新的文本值(下面是简化版)。我无法掌握的是如何遍历subfields,以便为source中的值更新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>
"""

0 个答案:

没有答案