ノードの属性情報を編集する(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>