在xpath中使用带有多个元素的AND运算符

时间:2015-08-07 05:35:34

标签: xml xpath

在我的XML文件中,我想拉出所有记录,其中indictator =“3”和status =“Test”。当我使用indicator =“3”和indicator =“2”时,这个XPath查询有效,但当我使用2个不同的元素时,它不起作用。

/*[local-name()='Sample']/*[local-name()='Pageview']/*[ self::Indicator=3 and self::Status="Test"  ]

<Sample>
<Pageview>
<Indicator>3</Indicator>
<Status>Test</Status>
</Pageview>
<Pageview>
<Indicator>3</Indicator>
<Status>Test</Status>
</Pageview>
<Pageview>
<Indicator>2</Indicator>
<Status>Non-Test</Status>
</Pageview>
</Sample>

1 个答案:

答案 0 :(得分:0)

这一点对我来说没有意义:

/*[self::Indicator=3 and self::Status="Test"]

元素不能同时是Indicator元素和Status元素,更不用说考虑元素值了。

如果您想要返回具有特定值的IndicatorStatus元素,那么条件应该是or而不是and

/*[self::Indicator=3 or self::Status="Test"]

如果你想检查父元素是否同时有两个子元素,那么你想尝试这个XPath:

/*[local-name()='Sample']/*[local-name()='Pageview'][Indicator=3 and Status="Test"]

如果以上都没有帮助您,请说明您希望XPath返回完全的问题。顺便说一句,我不明白为什么你必须使用local-name()来获取XPath中的某些元素,如果可能的话,你应该使用正确的名称空间前缀。