昨天我发布了这个问题:
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");
答案 0 :(得分:1)
您要查找的文字中有一个冒号。
htmlDoc.DocumentNode.SelectNodes("//p[TextValue()=\"Paragraph:\"]
解析器认为这是XML名称空间限定符。对于冒号,请使用转义符“。
答案 1 :(得分:0)
解决了!!!我用text()=而不是textvalue()=我不知道为什么昨天能用!!