C # HTML Parsing с использованием XPath - пространство имен

asp.net-mvc-4 c# html-agility-pack xpath

Вопрос

Я пытаюсь проанализировать HTML-страницу с помощью пакета Agility Pack. Я использовал расширение Firefox с именем XPath Checker, и я уверен, что выражение верное. Однако, когда я запускаю свой код, .NET сообщает мне, что «нужен Namespace Manager или XsltContext. Этот запрос имеет префикс, переменную или пользовательскую функцию».

Это нормально, но я не знаю, где взять Xslt или указанное пространство имен. Как я могу определить, какое пространство имен мне нужно?

Для справки, это мой код (я использую MVC4):

List<Post> posts = new List<Post>();
            // Use this to count how many nodes to get
            int postNodesAmount = doc.DocumentNode.SelectNodes("//div[@class=\"post_block no_sidebar\" ]").Count;            

            for (int i = 1; i <= postNodesAmount; i++)
            {
                Post newPost = new Post();
                string newContent = doc.DocumentNode.SelectSingleNode("id('pane_forums:posts')/x:div/x:div[" + i + "]/x:div/x:div/x:div/x:p[1]").InnerText;
                newPost.Content = newContent;
                posts.Add(newPost);
            }

            return View(posts);

Принятый ответ

Реализация XPatH пакета Html Agility Pack просто не поддерживает запросы, связанные с пространствами имен.

Библиотека является открытым исходным кодом, поэтому ее можно изменить, но для добавления этой функции требуется довольно много перезаписи.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow