C # HTML-Analyse mit XPath - Namespace

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

Frage

Ich versuche, eine HTML-Seite mit dem HTML Agility Pack zu analysieren. Ich habe eine Firefox-Erweiterung namens XPath Checker verwendet und bin mir ziemlich sicher, dass der Ausdruck korrekt ist. Wenn ich meinen Code ausführe, sagt mir .NET, dass "Namespace Manager oder XsltContext benötigt wird. Diese Abfrage hat ein Präfix, eine Variable oder eine benutzerdefinierte Funktion."

Das ist in Ordnung, außer dass ich keine Ahnung habe, woher ich den Xslt oder den genannten Namespace bekommen soll. Wie kann ich herausfinden, welchen Namespace ich benötige?

Als Referenz ist dies mein Code (ich benutze 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);

Akzeptierte Antwort

Die XPATH-Implementierung von Html Agility Pack unterstützt keine Abfragen mit Namespaces.

Die Bibliothek ist Open Source, also kann sie geändert werden, aber das erfordert eine ganze Reihe von Umschreibungen, um diese Funktion hinzuzufügen.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum