python xml.etree - 如何搜索多个属性

时间:2016-07-26 21:06:19

标签: python xml

我有一行XML文件:

<op type="create" file="C:/Users/mureadr/Desktop/A/HMI_FORGF/bld/armle-v7/release/SimpleNetwork/Makefile" found="0"/>

我想使用xml.etree搜索多个属性:

result = tree.search('.//op[@type="create" @file="c:/Users/mureadr/Desktop/A/HMI_FORGF/bld/armle-v7/release/HmiLogging/Makefile"]')

但是我收到了错误

  

引发SyntaxError(“无效谓词”)

我试过这个(添加and),仍然有同样的错误

'.//op[@type="create" and @file="c:/Users/mureadr/Desktop/A/HMI_FORGF/bld/armle-v7/release/HmiLogging/Makefile"]'

尝试添加&&,仍然遇到同样的错误

'.//op[@type="create" && @file="c:/Users/mureadr/Desktop/A/HMI_FORGF/bld/armle-v7/release/HmiLogging/Makefile"]'

最后,尝试了&,仍然遇到了相同的错误

'.//op[@type="create" & @file="c:/Users/mureadr/Desktop/A/HMI_FORGF/bld/armle-v7/release/HmiLogging/Makefile"]'

我猜这是xml.etree的限制。

可能我将来不应该使用它,但我差不多完成了我的项目。

对于 N 属性,如何使用etree.xml搜索所有 N 属性?

1 个答案:

答案 0 :(得分:1)

您可以连续使用多个方括号

<tr>

更新:我看到你正在使用python的'.//op[@type="create"][@file="/some/path"]' 模块。我不确定上述答案是否对该模块有效(它对XPath的支持非常有限)。我建议使用go-to库来完成所有XML任务 - LXML。如果您使用xml.etree,则只需lxml