4

私は文字列を持っています:

string hmtl = "<DIV><B> xpto </B></DIV>

と のタグを削除する必要が <div>あり</DIV>ます。の結果:<B> xpto </B>


多くのhtml<DIV> and </DIV>タグを削除せずに、<B> xpto </B>.

4

5 に答える 5

5

div タグを削除するだけの場合は、divタグとその属性が取得されます。

var html = 
  "<DIV><B> xpto <div text='abc'/></B></DIV><b>Other text <div>test</div>" 

var pattern = "@"(\</?DIV(.*?)/?\>)"";  

// Replace any match with nothing/empty string
Regex.Replace(html, pattern, string.Empty, RegexOptions.IgnoreCase);

結果

<B> xpto </B><b>Other text test
于 2012-10-30T16:42:07.573 に答える
5

htmlagilitypackを使用する

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml("<html>yourHtml</html>");

foreach(var item in doc.DocumentNode.SelectNodes("//div"))// "//div" is a xpath which means select div nodes that are anywhere in the html
{
 item.InnerHtml;//your div content
}

Bタグのみご希望の方は..

foreach(var item in doc.DocumentNode.SelectNodes("//B"))
    {
     item.OuterHtml;//your B tag and its content
    }
于 2012-10-30T16:35:53.023 に答える
2

使用Regex:

var result = Regex.Replace(html, @"</?DIV>", "");

更新しました

あなたが言及したように、このコードにより、正規表現は他のすべてのタグを削除しますB

var hmtl = "<DIV><B> xpto </B></DIV>";
var remainTag = "B";
var pattern = String.Format("(</?(?!{0})[^<>]*(?<!{0})>)", remainTag );
var result =  Regex.Replace(hmtl , pattern, "");
于 2012-10-30T16:51:18.893 に答える
0
html = Regex.Replace(html,@"<*DIV>", String.Empty);
于 2012-10-30T16:35:39.647 に答える