2011-12-01 43 views
16

Tôi đang tìm một số chức năng sẽ giải mã một số lượng lớn các thực thể HTML.Giải mã tất cả các thực thể HTML

Lý do là tôi đang làm việc trên một số mã để lấy nội dung HTML và biến thành văn bản thuần túy, vấn đề mà tôi có rất nhiều thực thể làm không được chuyển đổi bằng cách sử dụng HttpUtility.HtmlDecode.

Một số ví dụ về các pháp nhân mà tôi quan tâm là & nbsp ;, & amp ;, & bản sao ;.

Đây là dành cho .net 3.5.

+0

Tôi chuyển sang .NET 3.5 và sử dụng 'Console.WriteLine (HttpUtility.HtmlDecode (" , &, ©")); 'và nó làm việc tốt cho tôi. Tôi không thể hiểu tại sao bạn lại gặp rắc rối. Bạn có mã hóa chuỗi lạ hay gì đó? –

Trả lời

19

Sau đó, có lẽ bạn sẽ cần HttpUtility. HtmlDecode ?. Nó sẽ hoạt động, bạn chỉ cần thêm một tham chiếu đến System.Web. Ít nhất đây là cách trong .Net Framework < 4.

Ví dụ đoạn mã sau:

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

Làm việc và đầu ra là như mong đợi (ký hiệu & và biểu tượng bản quyền). Bạn có chắc chắn vấn đề nằm trong HtmlDecode chứ không phải cái gì khác?

CẬP NHẬT: Một lớp khác có khả năng thực hiện công việc, WebUtility (phương thức HtmlDecode) đã có trong các phiên bản mới hơn của .Net. Tuy nhiên, có vẻ như có một số vấn đề với nó. Xem câu hỏi HttpUtility vs. WebUtility.

+0

Bạn đúng, đó là cách tôi đã sử dụng kết quả, nếu tôi đặt nó vào một nhãn asp: nó sẽ chuyển đổi ký tự copywrite thành ©. – Matthew

+0

Tôi hiểu. Đó là khá hữu ích để biết :). –

20

Sử dụng WebUtility.HtmlDecode bao gồm trong Net 4

Ví dụ, nếu tôi chạy trong một ứng dụng giao diện điều khiển:

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

tôi nhận được , &, c

+1

Tôi có lẽ nên nói điều này là dành cho .net 3.5. Tôi đã +1 bạn. Cảm ơn bạn anyway. – Matthew

+0

Sự khác biệt giữa WebUtility và phương thức 'HtmlDecode' của HttpUtility là gì? – crush

+0

Có câu trả lời ở đây: http://stackoverflow.com/questions/17352981/webutility-htmldecode-vs-httputilty-htmldecode Tóm lại - WebTính năng đi kèm với WinRT, nó mới hơn trong khi HttpUtility là cũ (sử dụng tất cả ở nơi này vì vậy tôi mong đợi nó ở lại). Ngoài ra tôi nghĩ WebUtility là trong System.dll (System.Net), mà làm cho nó một chút dễ tiếp cận hơn cho WinApps (bạn không phải phụ thuộc vào System.Web) nếu tôi nhớ chính xác. –

Các vấn đề liên quan