2009-04-02 3 views
44

Ich weiß, dass es im System.Web-Namespace verschiedene Methoden zum Dekodieren von Html-Entitäten gibt (z. B. "% 20" für Leerzeichen). Ich baue eine Winforms-Anwendung, muss aber mit HTML-codierten Strings arbeiten. Grundsätzlich habe ich die iTunes Bibliothek XML-Datei und muss die URLs darin entschlüsseln, um die Dateien zu überprüfen.C# HTMLDecode ohne System.Web möglich?

Ist dies ohne den Namespace System.Web möglich?

+0

Warum würden Sie nicht den System.Web-Namespace verwenden? – AnthonyWJones

+4

Dies ist relevant, wenn Sie die Nur-Client-Teilmenge des Frameworks, +1, verwenden möchten. –

+0

@Cookey siehe Bizons Antwort, definitiv die beste. – BrainSlugs83

Antwort

91

Entwickler, die verwendet werden müssen, verwenden können System.Web.HttpUtility in ihren Client-Anwendungen und musste System.Web.dll referenzieren und daher NET4 voll (System.Web.dll ist voll) Ziel kann NET4 Client Profil mit dem neuen System.Net .WebUtility-Klasse, die in System.dll (System.dll ist in NET4-Client-Profil) ist. System.Net.WebUtility enthält HtmlEncode und HtmlDecode. URL-Codierung kann mithilfe der System.Uri-Klasse (auch in System.dll) erreicht werden.

Von http://blogs.msdn.com/b/jgoldb/archive/2010/04/12/what-s-new-in-net-framework-4-client-profile-rtm.aspx

+4

Dies ist die beste Antwort. Danke, Bizon! – BrainSlugs83

+0

Großartig! Vielen Dank!!! – Vlad

+0

danke! habe das gesucht. – michaelalm

25

Nur weil Sie eine Windows Forms App schreiben, stört Sie die Verwendung von System.Web nicht. Fügen Sie einfach einen Verweis auf System.Web.dll hinzu.

+0

Ich habe auf diesem zuvor gestolpert. Ich habe die Referenz vergessen, dachte eine "Verwendung" würde tun. Vielen Dank! – miccet

+13

Das Problem damit ist, dass Sie das .NET 3.5-Client-Profil nicht mit Ihrer .NET-App verwenden können, sodass Ihre XP-Benutzer den 150 MB-Download vermeiden und den kleineren 28 MB-Download verwenden können. Am besten vermeiden Sie den System.Web-Namespace, wenn Sie können. –

+2

Ich zweitens, es ist albern eine Teilmenge dieser Methoden konnte nicht in einer separaten Assembly für die Client-Profil-Installation zur Verfügung gestellt werden .. Ich finde mich oft in einfachen Client-Anwendungen. – Almund

1

Um die Methoden im .NET-Framework zu verwenden, müssen Sie den System.Web-Namespace verwenden, um die HtmlDecode-Methode abzurufen.

Ja, Sie könnten Ihre eigene Methode schreiben, um es zu tun, aber das würde nicht viel Sinn machen.

Fügen Sie einfach den Verweis auf system.web hinzu.

7

Siehe this article, wenn Sie immer noch neugierig sind, wie Sie dies ohne System.Web tun. Es bietet eine Lösung für die URI-Decodierung (das ist wirklich, was Sie Decodierung, keine HTML-Entitäten, die so etwas wie sind „& endash;“)

+0

Danke Steve, das war genau das, was ich gesucht habe +1 – si618

-2

Sie HttpUtility.UrlDecode oder HttpUtility.HtmlDecode

+5

Da die Frage war, wie dies ohne die System.Web Assembly Ich habe Angst, das ist nicht viel Hilfe .. – Almund

0

mybe es in WinForms helfen:

System.Uri.EscapeUriString(plainText); 
+0

Macht es Ihnen etwas aus, Ihren Code zu erweitern, anstatt einen einzigen Liner zu veröffentlichen? –

Verwandte Themen