C # HTML Parsing usando XPath - Namespace

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

Domanda

Sto cercando di analizzare una pagina HTML utilizzando l'HTML Agility Pack. Ho usato un'estensione per Firefox denominata XPath Checker e sono piuttosto sicuro che l'espressione sia corretta. Tuttavia, quando eseguo il mio codice, .NET mi dice che è necessario "Namespace Manager o XsltContext. Questa query ha un prefisso, una variabile o una funzione definita dall'utente".

Va bene, tranne che non ho idea di dove prendere Xslt o detto Namespace. Come posso capire di quale Namespace ho bisogno?

Per riferimento, questo è il mio codice (io uso 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);

Risposta accettata

L'implementazione XPATH di Html Agility Pack semplicemente non supporta query che coinvolgono spazi dei nomi.

La libreria è open source, quindi può essere modificata, ma questo richiede un bel po 'di riscritture per aggiungere questa funzione.




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché