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将元素中的所有文本作为一个值获取,删除<;wbr/>;要素_Xpath - Fatal编程技术网

XPath将元素中的所有文本作为一个值获取,删除<;wbr/>;要素

XPath将元素中的所有文本作为一个值获取,删除<;wbr/>;要素,xpath,Xpath,我需要在HTML文档中找到以下“a”元素 <a> 304897: Failing Test Case "CALM501-I20140715-0705- <wbr/> Add CD to Cart" </a> 当“a”元素的文本中不包含“wbr”元素时,上面的xpath就会起作用 有人能帮我找到一个合适的xpath吗?您可以这样尝试: //a[substring-after(normalize-space(string(.)),': ')='Failing T

我需要在HTML文档中找到以下“a”元素

<a>
304897: Failing Test Case "CALM501-I20140715-0705-
<wbr/>
Add CD to Cart"
</a>
当“a”元素的文本中不包含“wbr”元素时,上面的xpath就会起作用

有人能帮我找到一个合适的xpath吗?

您可以这样尝试:

//a[substring-after(normalize-space(string(.)),': ')='Failing Test Case "CALM501-I20140715-0705- Add CD to Cart"']
使用XPath
string()
获取标记中所有文本节点的组合值。下面是一个示例,说明您发布的输入标记,XPath:

substring-after(normalize-space(string(//a)),': ')
…将返回:

Failing Test Case "CALM501-I20140715-0705- Add CD to Cart"
更新:

原来
规范化空间(字符串(.))
返回的值与
规范化空间(.)
返回的值相同,因此这也可以正常工作:

//a[substring-after(normalize-space(.),': ')='Failing Test Case "CALM501-I20140715-0705- Add CD to Cart"']

因此,这不是使用
string()
的问题,而是不使用
text()
的问题,因为后者会分别为您带来每个文本节点,并且可能会导致不希望出现的行为,就像您在这里遇到的情况一样。

事实上
规范化空间(.)
返回与
规范化空间(string(.)相同的结果
因此表达式可以进一步缩短。但关键是:您几乎不应该使用
text()
@MichaelKay谢谢,我以前没有完全意识到这一点
//a[substring-after(normalize-space(.),': ')='Failing Test Case "CALM501-I20140715-0705- Add CD to Cart"']