python - 如何处理python元素树中xpath的多个搜索条件

标签 python xpath elementtree

我想使用Python(2.7.5) ElementTree通过多个搜索条件从xml文件中提取一些元素。 xml 看起来像:

   <src name="BdsBoot.c">
        <fn name="XXXXX" fn_cov="0" fn_total="1" cd_cov="0" cd_total="4">
           <probe line="113" kind="condition" event="full"/>
           <probe line="122" column="10" kind="condition" event="none" />
           <probe line="124" column="9" kind="condition" event="full" />
        </fn>
   </src>

我想要 kind="condition"和 event="full"的探针元素

我已经尝试过

root.findall(".//probe[@kind='condition' and @event='full']") —— error
root.findall(".//probe[@kind='condition'] and .//probe[@event='full']") —— nothing

我看了简单的介绍here ,现在elementtree好像不支持and运算符了?<​​/p>

有什么办法可以实现这个目标吗?

最佳答案

使用这个:

root.findall('.//probe[@kind="condition"][@event="full"]')

演示:

>>> s
'<src name="BdsBoot.c">\n        <fn name="XXXXX" fn_cov="0" fn_total="1" cd_cov="0" cd_total="4">\n           <probe line="113" kind="condition" event="full"/>\n           <probe line="122" column="10" kind="condition" event="none" />\n           <probe line="124" column="9" kind="condition" event="full" />\n        </fn>\n   </src>'
>>> root = ET.fromstring(s)
>>> root.findall('.//probe[@kind="condition"]')
[<Element 'probe' at 0x7f8a5146ce10>, <Element 'probe' at 0x7f8a5146ce50>, <Element 'probe' at 0x7f8a5146ce90>]
>>> root.findall('.//probe[@kind="condition"][@event="full"]')
[<Element 'probe' at 0x7f8a5146ce10>, <Element 'probe' at 0x7f8a5146ce90>]

关于python - 如何处理python元素树中xpath的多个搜索条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18097999/

相关文章:

python - 如何在Python中的类内部访问类属性

python - 如何在 Python 3 中自定义我自己的比较函数

javascript - 如何使用 XPath 替换 getElementById ("id").textContent 句子?

python - Selenium/python 2.7 如何查找只有标题的元素?

python - 使用 ElementTree 返回 XPath 属性值

python etree 插入、追加和子元素

python - 如何使用 Flask 允许 POST 方法?

用于识别节点类型的 XPath 测试

python - 如何在Python中从xml文档中获取特定标签

python - VPS 服务器上的 Pygame.display.init() 错误 : "No available video device",