2009-04-02 7 views
44

Tôi biết có nhiều phương pháp khác nhau trong không gian tên System.Web để giải mã các thực thể html (chẳng hạn như "% 20" cho không gian). Tôi đang xây dựng một ứng dụng Winforms tuy nhiên, nhưng cần phải đối phó với các chuỗi mã hóa html. Về cơ bản tôi có tập tin XML Thư viện iTunes và cần phải giải mã các URL trong đó để kiểm tra các tập tin.C# HTMLDecode không có System.Web có thể?

Đây có phải là có thể mà không gian tên System.Web?

+0

Tại sao bạn sẽ không sử dụng không gian tên System.Web? – AnthonyWJones

+4

Điều này có liên quan nếu bạn chỉ muốn sử dụng tập con của khung công tác, +1. –

+0

@Cookey xem câu trả lời của bizon, chắc chắn là câu trả lời hay nhất. – BrainSlugs83

Trả lời

91

nhà phát triển cần phải sử dụng System.Web.HttpUtility trong các ứng dụng khách hàng của họ và phải tham khảo System.Web.dll và do đó mục tiêu Net4 đầy đủ (System.Web.dll là trong Full), bây giờ có thể nhắm mục tiêu các Net4 khách hàng hồ sơ bằng System.Net mới Lớp .WebUtility có trong System.dll (System.dll nằm trong Hồ sơ Khách hàng NET4). System.Net.WebUtility bao gồm HtmlEncode và HtmlDecode. Mã hóa url có thể được thực hiện bằng cách sử dụng lớp System.Uri (cũng trong System.dll).

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

+4

Đây là câu trả lời hay nhất. Cảm ơn bizon! – BrainSlugs83

+0

Tuyệt vời! cảm ơn!!! – Vlad

+0

cảm ơn bạn! đang tìm kiếm điều này. – michaelalm

25

Chỉ vì bạn đang viết một ứng dụng Windows Forms không chỉ dừng lại bạn sử dụng System.Web. Chỉ cần thêm một tham chiếu đến System.Web.dll.

+0

Tôi đã vấp phải điều này trước đây. Tôi quên tham chiếu, nghĩ rằng "sử dụng" sẽ làm. Cảm ơn! – miccet

+13

Vấn đề với điều đó là bạn không thể sử dụng hồ sơ khách hàng .NET 3.5 với ứng dụng .NET của bạn để người dùng XP của bạn có thể tránh tải xuống 150MB và tải xuống phiên bản 28mb nhỏ hơn. Tốt nhất để tránh không gian tên System.Web nếu bạn có thể. –

+2

Tôi thứ hai, đó là ngớ ngẩn một tập hợp con của các phương pháp này không thể được cung cấp trong một lắp ráp riêng biệt có sẵn cho việc cài đặt hồ sơ khách hàng .. tôi thấy mình khá thường xuyên cần chúng trong các ứng dụng khách hàng đơn giản. – Almund

1

Để sử dụng các phương pháp mà là trong khuôn khổ NET bạn phải sử dụng không gian tên System.Web để có được phương pháp HtmlDecode.

Vâng, bạn có thể viết phương pháp riêng của mình để làm điều đó, nhưng điều đó sẽ không làm cho rất nhiều ý nghĩa.

Chỉ cần thêm tham chiếu vào system.web.

7

Xem this article nếu bạn vẫn còn tò mò làm thế nào để làm điều này mà không System.Web. Nó cung cấp một giải pháp cho URI giải mã (mà thực sự là những gì bạn đang giải mã, không thực thể HTML mà là một cái gì đó giống như "& emdash;")

+0

Cảm ơn Steve, đây chính xác là những gì tôi đang tìm kiếm +1 – si618

-2

Bạn có thể sử dụng HttpUtility.UrlDecode hoặc HttpUtility.HtmlDecode

+5

Vì câu hỏi là làm thế nào để thực hiện điều này Nếu không có hội đồng System.Web, tôi e rằng điều này không giúp được gì nhiều .. – Almund

0

mybe nó có thể giúp trong winforms:

System.Uri.EscapeUriString(plainText); 
+0

Bạn có muốn mở rộng mã của mình thay vì đăng một lớp lót không? –