System.Xml.XPath.XPathException: 'Требуется менеджер пространства имен или XsltContext.Этот запрос имеет префикс, переменную или пользовательскую функцию. ' - PullRequest
0 голосов
/ 18 мая 2019

Вчера я отправил этот вопрос:

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 agility pack я получаю сообщение об ошибке в заголовке. Что я могу сделать, чтобы решить это?

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 ]

1 голос
/ 19 мая 2019

У вас есть двоеточие в тексте, который вы ищете.

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

Анализатор считает, что это квалификатор пространства имен XML. Используйте escape-форму "для двоеточия.

0 голосов
/ 19 мая 2019

Решено !!!Я использовал text () = вместо textvalue () = я понятия не имею, почему вчера это сработало !!!

...