如果使用不同的值多次出现属性,如何使用python提取xml文件中的属性值

时间:2019-03-21 06:25:00

标签: python xml

在以下情况下,我必须从xml文件中提取具有特定值“ 10640”的属性调用"dlFrequencyNumber",但是属性"dlFrequencyNumber"出现在具有不同值的多行中,

getElementsByTagName()并没有帮助,因为它总是查找第一次出现的情况。

我可以在for循环的帮助下通过遍历所有行来做到这一点,但是有其他替代方法可以做到这一点。请提出建议。

 '''
 <attributes>
 <dlFrequencyNumber>10615</dlFrequencyNumber>
 <dlFrequencyNumber>10640</dlFrequencyNumber>
 <dlFrequencyNumber>10665</dlFrequencyNumber>
'''

非常感谢!

愿望

1 个答案:

答案 0 :(得分:0)

好。试试这个:

import xml.etree.ElementTree as ET

VALUE_REPLACEMENT = '999'
VALUE_TO_REPLACE = '10640'
xml = '''<attributes>
 <dlFrequencyNumber>10615</dlFrequencyNumber>
 <dlFrequencyNumber>10640</dlFrequencyNumber>
 <dlFrequencyNumber>10665</dlFrequencyNumber>
 </attributes>'''

root = ET.fromstring(xml)

found = [freq for freq in root.findall('dlFrequencyNumber') if freq.text == VALUE_TO_REPLACE][0]
found.text = VALUE_REPLACEMENT
print(ET.tostring(root, encoding='utf8', method='xml'))