特定のクラス名でdiv全体を削除することはできますか?例えば;特定のクラス名でdiv全体を削除
<body>
<div class="head">...</div>
<div class="container">...</div>
<div class="foot">...</div>
</body>
"container"クラスのdivを削除したいと思います。
C#のコード例は、verry便利です、ありがとうございます。
特定のクラス名でdiv全体を削除することはできますか?例えば;特定のクラス名でdiv全体を削除
<body>
<div class="head">...</div>
<div class="container">...</div>
<div class="foot">...</div>
</body>
"container"クラスのdivを削除したいと思います。
C#のコード例は、verry便利です、ありがとうございます。
これを行う適切な方法は、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);
もちろん、あなたはまた、などのループ
あなたが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();
geckofxがちょうどnice(またはより良いIMO)として許可されている場合、HtmlAgilityPackを使用しても意味がないと思います。 – Bartosz
まあ、正規表現の助けを借りて、あなたの希望の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>
にあなたの文字列を削減します
これは非常に悪い、悪い考えです。正規表現を使ってhtml/xmlを解析する、特にそれを行う方法を組み込んだ場合は間違っています:) – Bartosz
が実際にそれが可能だ行うことができます。 C#で削除しようとしていますか? – Saleem
@Saleemはいウェブブラウザです。 –