Как я могу получить значение тега 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
Другие вопросы по тегам