Come afferrare gli elementi per classe o id in HTML Source in C #?

c# html html-agility-pack parsing

Domanda

Sto cercando di catturare elementi dal codice sorgente HTML in base al nome della classe o dell'ID, utilizzando l'applicazione per i moduli Windows C #. Sto inserendo il codice sorgente in una stringa utilizzando WebClient e collegandolo a HTMLAgilityPack utilizzando HtmlDocument.

Tuttavia, tutti gli esempi che trovo con il pacchetto HTMLAgilityPack analizzano e trovano gli articoli in base ai tag. Ho bisogno di trovare un id specifico, di dire un link in html e recuperare il valore all'interno dei tag. È possibile e quale sarebbe il modo più efficiente per farlo? Tutto ciò che sto cercando di analizzare gli ID mi sta dando delle eccezioni. Grazie!

Risposta accettata

Dovresti essere in grado di farlo con XPath:

HtmlDocument doc = new HtmlDocument();
doc.Load(@"file.htm");

HtmlNode node = doc.DocumentNode.SelectSingleNode("//*[@id=\"my_control_id\"]");
string value = (node == null) ? "Error, id not found" : node.InnerHtml;

Breve spiegazione dell'xpath qui:

  • // significa cercare ovunque nel percorso, Usa SelectNodes se corrisponderà a multipli
  • * significa corrispondere a qualsiasi tipo di nodo
  • [] Definisci "Predicati" che fondamentalmente controllano le proprietà relative a questo nodo
  • [@id=\"my_control_id\"] significa trovare i nodi che hanno un attributo chiamato "id" con il valore "my_control_id"

Ulteriore riferimento



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é