Erfassen von Meta-Tags und Kommentaren mit HTML Agility Pack

.net c# html-agility-pack html-parsing

Frage

Ich habe nach Tutorials zur Verwendung von HTML Agility Pack gesucht, da es scheinbar alles tut, was ich möchte, aber es scheint, dass für so ein mächtiges Werkzeug im Internet wenig Lärm zu hören ist.

Ich schreibe eine einfache Methode, die jedes gegebene Tag basierend auf dem Namen abruft:

public string[] GetTagsByName(string TagName, string Source) {
    ...
}

Dies kann leicht mit einem Regulären Ausdruck geschehen, aber wir alle wissen, dass die Verwendung der Regex zum Parsen von HTML nicht richtig ist. Bisher habe ich den folgenden Code:

...
// TODO: Clear Comments (can this be done or should I use RegEx?)
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(Source);
ArrayList tags = new ArrayList();
string xpath = "//" + TagName;
foreach (HtmlTextNode node in doc.DocumentNode.SelectNodes(xpath) {
    tags.Add(node.Text);
}
return (string[])tags.ToArray(typeof(String));

Ich möchte in der Lage sein, zuerst alle Kommentare aus dem HTML zu entfernen und dann das richtige Tag basierend auf seinem Namen zurückzugeben. Wenn möglich, möchte ich auch bestimmte Meta-Tags basierend auf Attributen wie Robot zurückgeben. Ich bin mit xpath nicht so toll, also wäre jede Hilfe gut.

Jede Hilfe würde sehr geschätzt werden.

Akzeptierte Antwort

HtmlAgilityPacks HtmlDocument implementiert IXpathNavigable und verwendet daher die standardmäßige .NET XPath-Engine. Jede XPath 1.0-Dokumentation wird anwendbar sein, besonders wenn sie über System.Xml.XPath spricht.

"// comment ()" findet alle Kommentare
"// meta" findet alle "meta" -Elemente

HtmlDocument wurde entworfen, um XmlDocument sehr ähnlich zu sein , so dass Beispiele und Tutorials dazu etwas anwendbar sein werden.

Einige MSDN-Links:



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