Python ElementTree:使用XPath按子文本查找元素

2024-05-23 16:23:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图在它的一个子元素中找到一个具有特定文本值的元素。 例如

<peers>
    <peer>
        <offset>1</offset>
        <tag>TRUE</tag>
    </peer>
    <peer>
        <offset>2</offset>
        <tag>FALSE</tag>
    </peer>
</peers>

从这个XML文档中,我想直接在一个peer元素中找到tag,其offset值为1。

为此,我有一个XPath表达式,如下所示:

./peers/peer[offset='1']/tag

然而,在ElementTree的Element.find()方法中使用这样的表达式失败,并给出了None而不是我感兴趣的“tag”元素:

from xml.etree.ElementTree import fromstring

doc = fromstring("<peers><peer><offset>1</offset><tag>TRUE</tag></peer><peer><offset>2</offset><tag>FALSE</tag></peer></peers>")

tag = doc.find("./peers/peer[offset='1']/tag")

print tag


=> None

我倾向于认为,这要么是我上面的XPath表达式错误,要么是因为根据ElementTree的文档,ElementTree只支持XPath的一个子集。 寻求帮助。谢谢您。


Tags: 文档nonefalsetrue元素doc表达式tag