在xpath中包含只检查第一个匹配

时间:2015-07-13 16:43:07

标签: xpath

以xml作为例子:

<list>
  <element>
    <title>Element 1</title>
    <group>Group 1</group>
  </element>
  <element>
    <title>Element 2</title>
    <group>Group 1</group>
  </element>
  <element>
    <title>Element 3</title>
    <group>Group 1</group>
    <group>Group 2</group>
  </element>
  <element>
    <title>Element 4</title>
    <group>Group 2</group>
    <group>Group 3</group>
  </element>
</list>

要获取所有组,我使用以下xpath:

//group/text()

并且它工作正常 - 我在python中使用set删除重复项,因为我不知道我是否可以使用xpath-来完成它。但是当我想获取包含“Group 3”的元素时,我尝试以下xpath:

//element[contains(group/text(), "Group 3")]

我得到一个空的结果。当我搜索包含“组1”的元素时:

//element[contains(group/text(), "Group 1")]

我用3个元素得到了正确的结果。如果我寻找“第2组”,我只得到一个错误的结果。

我没有考虑到什么?如何按群组进行搜索?

1 个答案:

答案 0 :(得分:0)

contains只能在另一个字符串中出现字符串时进行测试。 group/text()不是字符串,而是节点的集合/序列。

您可以使用

//element[group/text() = "Group 1"]