2017.11.24
2020.1.7

ノードの属性情報を編集する(Html Agility Pack)

Html Agility Packで読み込んだHTMLからSelectNodesでノードを取得した後に、ノードの属性値の取得や設定、または属性自体の追加や削除を行う方法です。

目次

  • HTMLファイル
  • コード
  • 参考リンク

HTMLファイル

読み込むHTMLは以下の通りです。(c:\temp\test.html)


<div class="aaa" style='color:#888;'>a</div>
<div class="bbb" style='color:#888;'>b</div>
<div class="ccc" style='color:#888;'>c</div>

コード

以下のコードでは、SelectNodesで取得したdiv要素の属性に対して値の変更や、追加や削除などを行っています。


var doc = new HtmlDocument();
doc.Load(@"c:\temp\test.html");

var nodes = doc2.DocumentNode.SelectNodes("//div");
foreach(var node in nodes)
{
    // 属性値(class)の取得
    var value = node.Attributes["class"].Value;

    // 属性値(class)の設定
    node.Attributes["class"].Value = value + "ddd";

    // 属性(title)の追加
    node.Attributes.Add("title", node.InnerHtml);

    // 属性(style)の削除
    node.Attributes.Remove("style");
}

Console.WriteLine(doc.DocumentNode.OuterHtml);

出力結果は以下の通りです。


<div class="aaaddd" title="a">a</div>
<div class="bbbddd" title="b">b</div>
<div class="cccddd" title="c">c</div>

参考リンク

C#】関連記事