You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同配置同版本HtmlAgilityPack报XPathException错误,如何解决?

解决HtmlAgilityPack XPath查询中的Namespace Manager错误

嘿,这个问题我刚好碰到过,咱们一步步来搞定它!

问题根源

你现在抛出异常的代码里用了TextValue()这个函数,但它既不是标准XPath函数,也不是HtmlAgilityPack默认提供的自定义函数。而你之前成功的代码用的是text()——这才是能正确获取节点文本内容的标准XPath方法,这就是两个项目结果不同的核心原因。

当XPath解析器遇到TextValue()这种它不认识的函数时,会默认认为这是用户自定义的扩展函数,所以才会提示需要Namespace Manager或XsltContext来处理。

修复步骤

  1. 替换错误的函数名
    把你的XPath查询里的TextValue()改成text(),修正后的完整代码如下:
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(htmlText);
var tasksNodesCollection = htmlDoc.DocumentNode.SelectNodes("//p[text()=\"Paragraph:\"]/following-sibling::ul[1]//li");
  1. 处理文本匹配的边界情况(可选)
    如果你的HTML里<p>标签的文本前后有空格、换行或者大小写不一致的情况,可以用normalize-space()函数来标准化文本,避免匹配失败:
var tasksNodesCollection = htmlDoc.DocumentNode.SelectNodes("//p[normalize-space(text())=\"Paragraph:\"]/following-sibling::ul[1]//li");

快速验证小技巧

你可以先测试简化版的XPath,比如//p[text()=\"Paragraph:\"],看看能不能正确定位到目标<p>节点,确认没问题后再加上后续的兄弟节点查询,这样更容易排查问题。

内容的提问来源于stack exchange,提问作者nellowl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:38:10