如何在使用xPath.evaluate()时选择匹配指定文本的ITEM节点而非其父节点
解决XPath匹配指定文本ITEM节点的问题
嘿,我懂你现在的困扰——用/ITEMS/ITEM["example text 1"]的时候居然返回了整个ITEMS父节点,而不是你想要的那个匹配特定文本的ITEM节点,而且还没办法修改现有XML结构对吧?
其实问题出在表达式的写法上:你当前的写法本质是在判断「是否存在包含该文本的ITEM节点」,返回的是符合条件的父节点。要精准定位到目标ITEM,你需要明确指定匹配节点的文本内容,用text()函数就能实现:
/ITEMS/ITEM[text()="example text 1"]
额外小提示
如果你的ITEM节点文本前后可能带有空格、换行这类空白字符(XML里经常会出现这种情况),担心因为空白导致匹配失败的话,可以用normalize-space()函数统一处理空白内容:
/ITEMS/ITEM[normalize-space(text())="example text 1"]
这样就能准确返回那个包含"example text 1"的单个ITEM节点了。
内容的提问来源于stack exchange,提问作者Vitality_AS




