xpath中的包含仅检查第一个匹配项

xpath中的包含仅检查第一个匹配项,xpath,Xpath,以这篇xml文章为例: <list> <element> <title>Element 1</title> <group>Group 1</group> </element> <element> <title>Element 2</title> <group>Group 1</group> </ele

以这篇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>
它工作得很好-我稍后在python中使用集合删除重复项,因为我不知道是否可以使用xpath来完成。但是,当我想要获取包含“group3”的元素时,我会尝试以下xpath:

//group/text()
//element[contains(group/text(), "Group 3")]
我得到一个空的结果。而当我搜索包含“组1”的元素时:

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


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

包含的内容只有在一个字符串出现在另一个字符串中时才能进行测试
group/text()
不是字符串,而是一组/序列节点

你可以用

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

更好的是
//元素[group=“group 1”]
。最好避免使用
text()
,这不仅是因为它通常是不必要的,还因为它有时是错误的——例如,如果XML文档包含与文本混合的注释,它将不起作用。
//element[group/text() = "Group 1"]