2016-03-18 14 views
0

特定のクラス名でdiv全体を削除することはできますか?例えば;特定のクラス名でdiv全体を削除

<body> 
<div class="head">...</div> 
<div class="container">...</div> 
<div class="foot">...</div> 
</body> 

"container"クラスのdivを削除したいと思います。

C#のコード例は、verry便利です、ありがとうございます。

+0

が実際にそれが可能だ行うことができます。 C#で削除しようとしていますか? – Saleem

+0

@Saleemはいウェブブラウザです。 –

答えて

1

これを行う適切な方法は、GeckoのDOMクラスとメソッドを使って行います。

だから、のようなあなたの場合何かに:

var containers = yourDocument.GetElementsByClassName("container"); 
//this returns an IEnumerable of elements with this class. If you only ever gonna have one, you can do it like that: 
var yourContainer = containers.FirstOrDefault(); 
yourContainer.Parent.RemoveChild(yourContainer); 

もちろん、あなたはまた、などのループ

1

あなたがC#でHTMLを解析する場合の最善の方法は、HTML敏捷性パックを使用することです:

https://htmlagilitypack.codeplex.com/

HtmlDocument document = new HtmlDocument(); 
document.Load(@"C:\yourfile.html") 

HtmlNode nodesToRemove= document .DocumentNode.SelectNodes("//div[@class='container']").ToList(); 

foreach (var node in nodesToRemove) 
    node.Remove(); 
+0

geckofxがちょうどnice(またはより良いIMO)として許可されている場合、HtmlAgilityPackを使用しても意味がないと思います。 – Bartosz

0

まあ、正規表現の助けを借りて、あなたの希望のdiv

を削除することができます
var data = "<body>\n<div class=\"head\">...</div>\n" + 
    "<div class=\"container\">...</div>\n" + 
    "<div class=\"foot\">...</div>\n</body>"; 

var rxStr = "<div[^<]+class=([\"'])container\\1.*</div>"; 

var rx = new System.Text.RegularExpressions.Regex (rxStr, 
    System.Text.RegularExpressions.RegexOptions.IgnoreCase); 


var nStr = rx.Replace (data, ""); 

Console.WriteLine (nStr); 

これは

<body> 
<div class="head">...</div> 

<div class="foot">...</div> 
</body> 
にあなたの文字列を削減します
+0

これは非常に悪い、悪い考えです。正規表現を使ってhtml/xmlを解析する、特にそれを行う方法を組み込んだ場合は間違っています:) – Bartosz

関連する問題