如何根据另一个XML标记的值获取XML标记值?

时间:2017-12-22 09:16:52

标签: python xml elementtree

我无法使用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”)。为此,我需要一种过滤关键标签值“key1”和“key3”的方法。我目前的代码:

root = ElementTree.fromstring(r.content)
for entry in root.findall("workItem"):
  print(entry.find("stringExtensions").find("value").text)

只打印出“value1”,因为它返回XML结构中的第一个结果。我需要在打印前添加某种“where”条件,以便根据“key”标记值指定特定的“value”标记值。

非常感谢任何帮助!

此致

安德鲁

1 个答案:

答案 0 :(得分:0)

  

获取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