System.Xml.XPath.XPathException:'需要名称空间管理器或XsltContext。该查询具有前缀,变量或用户定义的功能。”

时间:2019-05-18 18:56:05

标签: c# xml html-agility-pack

昨天我发布了这个问题:

https://stackoverflow.com/questions/56182368/html-agility-pack-select-node-after-particular-paragraph

我使用以下解决方案解决了:htmlSnippet.DocumentNode.SelectNodes('//p[text()="targetWord"]/following-sibling::ul[1]//li')

今天在另一个具有相同配置和HTML敏捷包版本的项目中,我获得了标题中的错误消息。我该怎么解决?

System.Xml.XPath.XPathException: 'Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function.'

引发异常的代码:

var htmlDoc = new HtmlDocument();
            htmlDoc.LoadHtml(htmlText);


            //var ulCollection = htmlDoc.DocumentNode.SelectNodes("//ul");

            var tasksNodesCollection = htmlDoc.DocumentNode.SelectNodes("//p[TextValue()=\"Paragraph:\"]/following-sibling::ul[1]//li");

2 个答案:

答案 0 :(得分:1)

您要查找的文字中有一个冒号。

htmlDoc.DocumentNode.SelectNodes("//p[TextValue()=\"Paragraph:\"]

解析器认为这是XML名称空间限定符。对于冒号,请使用转义符“。

答案 1 :(得分:0)

解决了!!!我用text()=而不是textvalue()=我不知道为什么昨天能用!!