Wie man Elemente nach Klasse oder ID in HTML-Quelle in C # greift?

c# html html-agility-pack parsing

Frage

Ich versuche, Elemente von HTML-Quelle basierend auf dem Klassen- oder ID-Namen zu greifen, mit C # Windows Forms-Anwendung. Ich stelle die Quelle in einen String mit dem WebClient und stöpsle ihn in das HTMLAgilityPack mit HtmlDocument ein.

Alle Beispiele, die ich mit dem Package HTMLAgilityPack finde, durchforsten und finden Elemente anhand von Tags. Ich muss eine spezifische ID finden, zum Beispiel einen Link im HTML, und den Wert innerhalb der Tags abrufen. Ist das möglich und was wäre der effizienteste Weg? Alles, was ich versuche, die IDs zu analysieren, gibt mir Ausnahmen. Vielen Dank!

Akzeptierte Antwort

Dies sollte mit XPath möglich sein:

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;

Schnelle Erklärung des XPath hier:

  • // bedeutet, dass Sie überall im Pfad suchen. Verwenden Sie SelectNodes wenn es zu einem Vielfachen SelectNodes
  • * bedeutet, dass alle Arten von Knoten übereinstimmen
  • [] definieren "Prädikate", die im Wesentlichen Eigenschaften dieses Knotens überprüfen
  • [@id=\"my_control_id\"] bedeutet Knoten finden, die ein Attribut namens "id" mit dem Wert "my_control_id" haben

Weitere Referenz



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