Analyse HTML en C # à l'aide de XPath - Espace de noms

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

Question

J'essaie d'analyser une page HTML à l'aide du HTML Agility Pack. J'ai utilisé une extension Firefox nommée XPath Checker et je suis plutôt sûr que l'expression est correcte. Toutefois, lorsque je lance mon code, .NET me dit que "Namespace Manager ou XsltContext était nécessaire. Cette requête a un préfixe, une variable ou une fonction définie par l'utilisateur".

C'est bien, sauf que je ne sais pas où obtenir Xslt ou ledit Namespace. Comment savoir de quel espace de noms j'ai besoin?

Pour référence, voici mon code (j'utilise 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);

Réponse acceptée

L'implémentation XPATH de Html Agility Pack ne prend tout simplement pas en charge les requêtes impliquant des espaces de noms.

La bibliothèque est open source, elle peut donc être modifiée, mais cela nécessite un tas de réécritures pour ajouter cette fonction.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi