Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XPath无法使用text()定位元素_Text_Xpath - Fatal编程技术网

XPath无法使用text()定位元素

XPath无法使用text()定位元素,text,xpath,Text,Xpath,以下代码: <label> <input class="class1" type="checkbox" checked="checked"/> First text </label> <label> <input class="class2" type="checkbox" checked="checked"/> Second text

以下代码:

<label>
<input class="class1" type="checkbox" checked="checked"/>
                First text             
</label>
<label>
<input class="class2" type="checkbox" checked="checked"/>
                Second text             
</label>
<label>
<input class="class3" type="checkbox" checked="checked"/>
                Third text             
</label>

但它不起作用

请告诉我

谢谢!:)

//标签[text()[包含(,'First text')]]
你的尝试

//label[contains(text(),'First text')] //标签[包含(text(),'First text')] 无法工作,因为中的

<label>[
]<input class="class1" type="checkbox" checked="checked"/>[
                First text             
]</label>
[
][
第一个文本
]
有两个文本节点:一个空节点只包含换行符,就在
输入之前,另一个非空节点位于
之后。我在上面用方括号标出了它们的轮廓

  • contains(节点集,字符串)
    这样的调用强制将第一个参数转换为
    contains
    到string
  • 将节点集转换为字符串将提供该集第一个节点的文本内容。(试试看,
    string(label)
    将为您提供带有一堆空白的
    第一个文本”
    ,无论有多少个标签。)
  • 在您的例子中,这是空文本节点,因此
    包含(text(),'First text')
    将永远不会成功

因此,您必须单独测试文本节点,这是通过嵌套谓词完成的,如上图所示。

Great!!谢谢!:) //label[text()[contains(., 'First text')]] //label[contains(text(),'First text')]
<label>[
]<input class="class1" type="checkbox" checked="checked"/>[
                First text             
]</label>