与属性值“匹配的XPATH表达式”;“真的”;
我有这样一些XML:与属性值“匹配的XPATH表达式”;“真的”;,xpath,expression,Xpath,Expression,我有这样一些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"/&
<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
编辑:
我的xpath表达式是(不起作用)是:
//引擎[(property/@name='bar'和property/@value=“true”)]
谢谢,你是这么说的
//engine[property[@name='bar' and @value='true']]
给你太多的结果?因为对我来说,它只给出了一个。你尝试了什么XPath表达式 以下内容在获取“blah1.com”而不是“blah2.com”时似乎效果不错:
//引擎[属性[@value=“true”][@name=“bar”]]
请记住,您需要将参数测试值括在引号中
我想匹配所有引擎元素
这是:
//engine
具有子节点属性的
现在变成了:
//engine[property]
名称等于“bar”
更具体地说:
//engine[property[@name = 'bar']]
和值等于“真”
最后:
//engine[property[@name = 'bar' and @value = 'true']]
我意识到我的xpath一直在工作,我在做一些愚蠢的事情。尽管如此,迪米特里还是得到了我想要的答案。谢谢就我个人而言,我在使用双引号时遇到了一些问题。我必须使用单引号。