空要素<img />や<br />のタグの終端がデフォルトでは出力されない対応(Html Agility Pack)
Html Agility Packで読み込んだHTMLの内容を修正後に保存すると、読み込む前のHTMLにはあったはずの空要素<img />や<br />タグの終端「/」が出力されずに保存されてしまっていたので、タグの終端まで含めて出力する方法です。
目次
- HTMLファイル
- コード(タグ終端なし)
- コード(タグ終端有り)
- 備考
- 参考リンク
HTMLファイル
読み込むHTMLは以下の通りです。(c:\temp\test.html)
<div>
<br>
</div>
コード(タグ終端なし)
デフォルトではタグの終端は出力されません。
var doc = new HtmlDocument();
doc.Load(@"c:\temp\test.html");
Console.WriteLine(doc.DocumentNode.OuterHtml);
出力結果
<div>
<br>
</div>
コード(タグ終端有り)
空要素のタグを終端有りで出力するには、「OptionWriteEmptyNodes」に「true」を設定します。
var doc = new HtmlDocument();
doc.Load(@"c:\temp\test.html");
doc.OptionWriteEmptyNodes = true;
Console.WriteLine(doc.DocumentNode.OuterHtml);
出力結果
<div>
<br />
</div>
備考
タグの終端を記述する書き方はXHTMLからの名残らしいですが、HTML5でも正しい文法として解釈されます。ただ、とくに理由がないなら、終端はなくてもいいと思います。