2011-07-12 5 views
39

私は現在、HtmlAgilityPackをコンソールアプリケーションで使用して、Webサイトをスクラップしています。 htmlはエンコードされているので(エンコードされた文字は'のようになります)、データベースにコンテンツを保存する前にデコードする必要があります。HtmlAgilityPackとHtmlDecode

HttpUtility.HtmlDecodeを使用せずに、HtmlAgilityPackを使用して返されたHTMLをデコードする方法はありますか?可能であれば、私のコンソールアプリケーションにSystem.Webを追加しないようにしたい。

+0

なぜSystem.Webを追加しませんか?それはデフォルトの.netライブラリなので、どんなクライアントマシンでも利用できるはずです。 – ChrFin

+3

@chrfin:間違っています。それはクライアントプロファイルにありません。 – SLaks

答えて

80

Htmlアジリティパックには、HtmlEntityというユーティリティクラスが装備されています。これはよく知られているエンティティをサポート

/// <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) 

(等&nbsp;)及びエンコードされた文字など&#039;同様に:これは、次のシグネチャを持つ静的メソッドを有します。

5

ちょうど私の2セントを追加:私はStopWatchクラスを使用して、いくつかのパフォーマンステストを実行し、HttpUtility.HtmlDecodeDeEntitize方法よりおよそ15から20パーセント高速であることがわかりました。またDeEntitizeにはいくつかのバグがあります(上記のコメントを参照)。

多分System.Webを参照することは、あまりにも悪いことではありません。

".NET Full"(軽量版である ".NET Client Profile"とは対照的)を既にターゲットとしているアプリを書く場合は、System.Webを参照してください。

関連する問題