使用ElementTree的findall()匹配元素的文本

2024-05-16 03:00:31 发布

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

我试图使用ElementTree的findall()函数来获取一个名为子元素<name>Kepler</name>的所有<planet>元素的列表。例如,我只希望在以下xml文件中返回前两个行星:

<planet>
    <name>Kepler</name>
</planet>
<planet>
    <name>Kepler</name>
</planet>
<planet>
    <name>Newton</name>
</planet>

除了找到所有的<planet>元素并在它们上循环之外,有什么优雅的方法可以做到呢?我希望像

^{pr2}$

有什么提示吗?在


Tags: 文件方法函数name元素列表newtonxml
1条回答
网友
1楼 · 发布于 2024-05-16 03:00:31

接近!在xpath中,以下内容是有效的(在lxml中测试以确保!)在

root.xpath('//planet[name[text()="Kepler"]]')

相当于:

^{pr2}$

现在,xml.etree似乎不喜欢前一个XPath表达式(Invalid Predicate?!)但后者很酷。哦,好吧。所以我们有:

root.findall('.//planet[name="Kepler"]')

相关问题 更多 >