2017.11.24
2020.1.7

ノードの追加と削除(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">

参考リンク

C#】関連記事