2011-12-01 13 views
16

Poszukuję jakiejś funkcji, która dekoduje znaczną liczbę elementów HTML.Dekodowanie wszystkich obiektów HTML

Powód jest pracuję nad pewnym kodem wziąć zawartości HTML i przekształcając go w postaci zwykłego tekstu, problem, że mam jest wiele podmiotów zrobić nie get przeliczane HttpUtility.HtmlDecode.

Oto niektóre przykłady podmiotów, o których mi chodzi, to: & nbsp ;, & amp ;, & copy ;.

Jest to dla .net 3.5.

+0

przeszedłem do .NET 3.5 i używany 'Console.WriteLine (HttpUtility.HtmlDecode (" , &, ©"));' i to działało dobrze dla mnie. Nie rozumiem, dlaczego masz kłopoty. Czy masz dziwne kodowanie ciągów lub coś takiego? –

Odpowiedz

19

Wtedy może potrzebne będą HttpUtility. HtmlDecode ?. To powinno działać, wystarczy dodać odniesienie do System.Web. Przynajmniej to sposób, w Net ramowego < 4.

na przykład następujące kodu:

MessageBox.Show(HttpUtility.HtmlDecode("&amp;&copy;")); 

pracował i wyjście był prawidłowo (znakach symbolu autorskich). Czy jesteś pewien, że problem jest w HtmlDecode, a nie coś innego?

UPDATE: Inna klasa zdolna do wykonywania pracy, WebUtility (znowu HtmlDecode metoda) wszedł w nowszych wersjach .NET. Jednak wydaje się, że są z tym problemy. Zobacz pytanie: HttpUtility vs. WebUtility.

+0

Masz rację, tak właśnie użyłem wyniku, jeśli umieściłem go w etykiecie asp: to skonwertuje on znak copywrite na ©. – Matthew

+0

Rozumiem. Warto wiedzieć :). –

20

Zastosowanie WebUtility.HtmlDecode zawarte w .NET 4

Na przykład, jeśli biegnę w app konsoli:

Console.WriteLine(WebUtility.HtmlDecode("&nbsp;, &amp;, &copy;")); 

uzyskać , &, c

+1

Prawdopodobnie powinienem był powiedzieć, że to jest dla .net 3.5. I + 1'ed cię jednak. Mimo wszystko dziekuję. – Matthew

+0

Jaka jest różnica między metodą WebUtility a HttpUtility 'HtmlDecode'? – crush

+0

Jest odpowiedź tutaj: http://stackoverflow.com/questions/17352981/webutility-htmldecode-vs-httputilty-htmldecode W skrócie - WebUtility przyszedł z WinRT, to nowsza natomiast HttpUtility jest stary (używany wszystko nad tym miejscem, więc spodziewam się, że zostanie). Również myślę, że WebUtility jest w System.dll (System.Net), co czyni go bardziej dostępnym dla WinApps (nie musisz polegać na System.Web), jeśli dobrze pamiętam. –

Powiązane problemy