ElementTree,如何找到邻居元素

ElementTree, how to find neighbor element

我有 XML 文件,它看起来像这样:

<ROWSET>
<ROW>
<element>Element1</element>
<element_id>01</element_id>
</ROW>
<ROW>
<element>Element2</element>
<element_id>02</element_id>
</ROW>
<ROW>
<element>Element3</element>
<element_id>03</element_id>
</ROW>
</ROWSET>

<element> 的值是我从表格中获取的。现在我需要知道这个元素的<element_id>。请帮助我。谢谢。

您可以使用 XPath 谓词来获取某个子元素具有特定值的父元素,例如 //parent[child='certain_value']。然后从这一点开始,您可以简单地 return 同一父元素的另一个子元素,因此整个 XPath 看起来大约像这样 //parent[child='certain_value']/another_child

针对您的案例的完整工作演示示例:

from xml.etree import ElementTree as ET

source = '''<ROWSET>
<ROW>
<element>Element1</element>
<element_id>01</element_id>
</ROW>
<ROW>
<element>Element2</element>
<element_id>02</element_id>
</ROW>
<ROW>
<element>Element3</element>
<element_id>03</element_id>
</ROW>
</ROWSET>'''
root = ET.fromstring(source)
target_element_value = 'Element2'
result = root.find('.//ROW[element="' + target_element_value + '"]/element_id')
print(result.text)

输出:

02