在我的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>
答案 0 :(得分:0)
这一点对我来说没有意义:
/*[self::Indicator=3 and self::Status="Test"]
元素不能同时是Indicator
元素和Status
元素,更不用说考虑元素值了。
如果您想要返回具有特定值的Indicator
或Status
元素,那么条件应该是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中的某些元素,如果可能的话,你应该使用正确的名称空间前缀。