首页 文章

XPATH表达式匹配属性值“true”

提问于
浏览
5

我有一些像这样的XML:

<engine-set>
  <engine host-ref="blah1.com">
  <property name="foo" value="true"/>
  <property name="bar" value="true"/>
 </engine>
 <engine host-ref="blah2.com">
  <property name="foo" value="true"/>
  <property name="bar" value="false"/>
 </engine>
</engine-set>

我希望匹配所有具有子节点属性的引擎元素,其名称等于“bar”,并且值等于“true” . 我发现我的XML中出现“true”的事实导致我的条件总是在XPath表达式中评估为true . 有办法吗?我正在使用Python和lxml .

EDIT:

我的xpath表达式是(不起作用)是:// engine [(property / @ name ='bar'和property / @ value =“true”)]

谢谢,

3 回答

  • 2

    我希望匹配所有引擎元素

    这是:

    //engine
    

    具有子节点属性

    现在变成:

    //engine[property]
    

    名称等于“bar”

    更具体:

    //engine[property[@name = 'bar']]
    

    和值等于“true” .

    最后:

    //engine[property[@name = 'bar' and @value = 'true']]
    
  • 17

    所以你说的

    //engine[property[@name='bar' and @value='true']]
    

    给你太多结果?因为对我来说它只给出一个 .

  • 5

    您尝试了什么XPath表达式?

    以下似乎在获取"blah1.com"但不是"blah2.com"时效果很好: //engine[property[@value="true"][@name="bar"]]

    请记住,您需要将参数测试值包含在引号中 .

相关问题