0

C#で正規表現を介して特別なタグからHTMLをきれいにする方法は?

これは、削除する必要があるサンプル HTML です。<font size="-2">

R&amp;usg=AFQjCNFYiDC6u3xOGn4JpO-GF83PjdSbtw&amp;url=http://online.wsj.com/article/SB10000872396390444426404577647060576633348.html"><img src="//nt2.ggpht.com/news/tbn/bm6jvTMtF-PpnM/6.jpg" alt="" border="1" width="80" height="80" /><br /><font size="-2">Wall Street Journal</font></a></font>
            </td>

どういうわけか正規表現を使用する必要があることはわかっていますが、それをどのように使用できるかわかりません。

この方法を調整しようとしましたが、すべてのタグが消去されます。

public string Strip(string text) 
{ 
   return Regex.Replace(text, @”&lt;(.|\n)*?>”, string.Empty); 
}

実際、私はこのようにするためのいくつかのアプローチを探しています

public string Strip(string text, HTMLTags.Font)
{

} 

ここHTMLTags.Fontで、いくつかの HTML タグの列挙

enum HTMLTags
{
    Font,
    Div,
    Td
    ...
}

手がかりをありがとう!!!

4

3 に答える 3

3

HtmlAgilityPackを使用して html を解析する

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);

foreach (var font in doc.DocumentNode.Descendants("font").ToArray())
{
    font.Remove();
}
于 2012-09-12T18:37:30.833 に答える
2

これに最適なのはHtml Agility Packです。

これは正規表現ではありませんが、パーサーは「現実世界」の不正な HTML に対して非常に寛容です。

于 2012-09-12T18:37:34.390 に答える
1

HTMLAgilityPackはおそらく最良のオプションですが (HTML の表現のような DOM に対して LINQ クエリや XPath クエリを実行できるため)。開始は次のようになります。

public static class HTMLTags
{
    public string Font { get { return "<font>" } }
    public string Div { get { return "<div>" } }
    public string Td { get { return "<td>" } }
}

次に、クライアント コードで次のようにします。

public string Strip(string text, HTMLTags.Font)
{
    /* string parse/replace occurances of HTMLTags.Font  */
} 
于 2012-09-12T18:38:32.470 に答える