ノードの追加と削除(Html Agility Pack)
Html Agility Packで読み込んだHTMLからSelectNodesでノードを取得した後に、取得したノードの削除、または前後に新たな要素を追加する方法です。
目次
- HTMLファイル
- コード
- 参考リンク
HTMLファイル
読み込むHTMLは以下の通りです。(c:\temp\test.html)
<div class="aaa">a</div>
<div class="bbb">b</div>
<div class="ccc">c</div>
コード
以下のコードでは、SelectNodesで取得したdiv要素の後ろに新たなimg要素を追加して該当ノードを削除しています。
var doc = new HtmlDocument();
doc.Load(@"c:\temp\test.html");
var nodes = doc.DocumentNode.SelectNodes("//div");
foreach(var node in nodes)
{
// ノードの追加
var img = doc.CreateElement("img");
img.Attributes.Add("src", node.Attributes["class"].Value + "-test.jpg");
node.ParentNode.InsertAfter(img, node);
// ノードの削除
node.Remove();
}
Console.WriteLine(doc.DocumentNode.OuterHtml);
出力結果は以下の通りです。
<img src="aaa-test.jpg">
<img src="bbb-test.jpg">
<img src="ccc-test.jpg">