如何获取正确的XPath以提取指定数值或分隔拼接的数值内容
问题原因
目标<td>节点下包含两个独立的文本节点,分别对应44.78和13.02%:
- 直接取
<td>节点的文本内容时,解析器会将所有子文本节点的内容无分隔拼接,所以得到44.7813.02% - 直接用
text()匹配返回的是文本节点集合,大部分XPath运行环境不支持直接返回节点集合类型,因此会返回空值
解决方案
仅提取44.78的XPath
指定取第一个文本节点即可://div[@id="DupontDiv"]/table/tbody/tr[2]/td[2]/text()[1]
两个数值用空格分隔返回
分两种XPath版本适配:
- 支持XPath 2.0及以上版本的环境,用
string-join拼接所有文本节点:string-join(//div[@id="DupontDiv"]/table/tbody/tr[2]/td[2]/text(), ' ') - 仅支持XPath 1.0的环境,分别取两个文本节点手动拼接:
concat(//div[@id="DupontDiv"]/table/tbody/tr[2]/td[2]/text()[1], ' ', //div[@id="DupontDiv"]/table/tbody/tr[2]/td[2]/text()[2])
内容的提问来源于stack exchange,提问作者Bryan
相关产品推荐
相关产品推荐

