Как я могу получить значение тега XML на основе значения другого тега XML?
Я застрял, работая с XML и классом ElementTree. У меня есть следующая структура XML:
<workItem>
<stringExtensions>
<key>key1</key>
<value>value1</value>
</stringExtensions>
<stringExtensions>
<key>key2</key>
<value>value2</value>
</stringExtensions>
<stringExtensions>
<key>key3</key>
<value>value3</value>
</stringExtensions>
</workItem>
Я хотел бы распечатать значения "value1" и "value3" (не "value2"). Для этого мне нужен способ фильтрации по значению тега key "key1" и "key3". Мой текущий код:
root = ElementTree.fromstring(r.content)
for entry in root.findall("workItem"):
print(entry.find("stringExtensions").find("value").text)
будет распечатывать только "значение1", поскольку оно возвращает первый результат в структуре XML. Мне нужно добавить какое-то условие "где" перед печатью, чтобы я мог указать, основываясь на значении тега "key", конкретное значение тега "value".
Любая помощь будет принята с благодарностью!
С Уважением,
Эндрю
1 ответ
чтобы получить значения тега значения для значений key1 и key3
Оптимизированное решение:
...
root = ElementTree.fromstring(r.content)
v1 = root.find('./stringExtensions[key="key1"]/value')
v3 = root.find('./stringExtensions[key="key3"]/value')
print(v1.text, v3.text, sep='\n')
Выход:
value1
value3