Ich verwende derzeit HtmlAgilityPack mit einer Konsolenanwendung, um eine Website zu scrappen. Da der HTML-Code codiert ist (codierte Zeichen wie '
zurückgibt), muss ich dekodieren, bevor ich den Inhalt in meiner Datenbank speichern kann.
Gibt es eine Möglichkeit, den zurückgegebenen HTML-Code mit HtmlAgilityPack zu dekodieren, ohne HttpUtility.HtmlDecode verwenden zu müssen? Ich möchte vermeiden, System.Web meiner Konsolenanwendung hinzuzufügen, wenn möglich.
Das Html Agility Pack ist mit einer Utility-Klasse namens HtmlEntity
. Es hat eine statische Methode mit der folgenden Signatur:
/// <summary>
/// Replace known entities by characters.
/// </summary>
/// <param name="text">The source text.</param>
/// <returns>The result text.</returns>
public static string DeEntitize(string text)
Es unterstützt bekannte Entitäten (wie
) und codierte Zeichen wie '
auch.
HttpUtility.HtmlDecode
einfach meine 2 Cents hinzu: Ich habe einige Leistungstests mit der StopWatch
Klasse ausgeführt und festgestellt, dass HttpUtility.HtmlDecode
ungefähr 15-20% schneller ist als die DeEntitize
Methode. Auch DeEntitize
hat einige Bugs (siehe Kommentare oben).
Vielleicht ist die Referenzierung von System.Web gar nicht so schlimm.
Wenn Sie eine App schreiben, die bereits auf ".NET full" abzielt (im Gegensatz zu ".NET Client Profile" - das ist eine Lightweight-Version) - würde ich mich für eine Referenzierung von System.Web entscheiden.