HtmlAgilityPack che utilizza Linq per la piattaforma Windows Phone 8.1

c# html-agility-pack linq windows-phone-8.1

Domanda

Poiché HtmlAgilityPack non è ancora supportato in Windows Phone 8.1, la referenziazione manuale nel progetto è stata una soluzione complicata. Ma questo non è l'unico problema. Potrei usare XPath per il mio progetto passato per selezionare i nodi. Ora posso vedere che la funzione HtmlDocumentNode.SelectNode() non esiste più (a causa della compatibilità della versione potrebbe essere).

quello che ho usato nel mio passato progetto era simile a questo

HtmlNode parent = document.DocumentNode.SelectSingleNode("//ul[@class='songs-list1']");
HtmlNodeCollection x = parent.ChildNodes;

Ho cercato su stackoverflow e google e ho ottenuto un'idea che è ancora possibile selezionare i nodi usando Linq.

Sto cercando un blocco di codice che funzioni come SelectNodes , SelectNode .

Il caricamento di HtmlDocument modo asincrono sarebbe apprezzato.

Risposta accettata

Se intendevi tradurre il tuo codice corrente che usa XPath per usare LINQ, allora questo farà:

HtmlNode parent = document.DocumentNode
                          .Descendants("ul")
                          .FirstOrDefault(o => o.GetAttributeValue("class", "") 
                                                   == "songs-list1")
HtmlNodeCollection x = parent.ChildNodes;

Tuttavia, se si prevede di trovare metodi che accettano XPath nella versione HtmlAgilityPack per le app universali di Windows Phone 8.1 o Windows RT (" Sto cercando un blocco di codice che funzioni come SelectNodes , SelectNode "), è meglio non farlo: HtmlAgilityPack & Windows 8 Metro Apps (risposta dell'autore di HAP).


Risposta popolare

Puoi farlo usando il metodo Element / s:

        HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(htmlString);
        var h6Nodes = from h6element in doc.DocumentNode.Element("body").Element("center").Elements("h6")
                      where h6element.Attributes["class"].Value.Equals("songs-list")                      
                      select h6element;

Questo presuppone che tu abbia qualcosa come

string htmlString = @"<html>
<body>
<center>
<h6>Hello  </h6>
<h6>World!   </h6>
<h6 class=""songs-list"">
Insert that one song here
</h6>
</center>
</body>
</html>"

e questo otterrà il nodo <h6> con le canzoni class-list.




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é