PRCO 管理人のページ

特設ページ
このブログについて
管理人へのご連絡はこちら
メモファイル管理&暗号化ソフト(ヤンマ) バグ、要望 まとめ
最新コメント
(2024/02/15 19:31:25)
いやホンマ。面白いコンテンツに出会う度に思います
シンイち。(2024/02/08 20:57:43)
あら、メンテナンスされてるかたはいらっしゃる感じなんですかね…。私の方でも誰でも同じようなもの作れるようにコアな部分のソース等公開したりできたら良いんですが気力がなく何も出来てません ^ ^;
moondoldo(2024/01/24 15:09:34)
OSDN(旧SourceForge.JP)が閉鎖するという話を聞いて色々見て回ってたのですが、その関連なのか「TOMBO プロジェクト日本語トップページ - OSDN」のページがとうとう見れなくなりましたね
シンイち。(2024/01/17 11:33:42)
作り物の話しなんて所詮ファンタジーなんだし、綺麗な方がいいものは綺麗にしとけよって思うよね。R15くらいにはマジでなりそうで怖いね…w
(2023/12/16 02:42:36)
そうなんすよねー。実写は俳優さんの仕事機会にも関わるので分かりますが、絵にもそれを求めるのって結局昔からある「不健全なもの」規制の延長なんでしょうねぇ。その内美男美女多めの作品は18禁になったりして・・・(笑
HtmlAgilityPack でHTML出力
更新日時:2017年05月25日
プログラム / ソフトウェア
最近C#(VisualStudio)でツール作ることが多いのですが、HTMLのページを解析する方法を検索すると必ず上がってくるHtmlAgilityPackと言うライブラリがあります。

非常に便利なライブラリなのですが、読み込み&解析だけではなく作成(加工)&出力も出来ます。

ネットでHTML出力方法とか検索してもHtmlAgilityPackを使った方法はあまりヒットしなかったのでメモっておきます。

読み込み&解析についてはそこらに転がっているので割愛。

作成(加工)&出力は以下のようにすれば出来ました。
テーブルを作るサンプルです。



// インスタンス作成
HtmlAgilityPack.HtmlDocument html = new HtmlAgilityPack.HtmlDocument();

// table タグを作成
HtmlNode table = html.CreateElement("table");

// tr タグを作成
HtmlNode tr = html.CreateElement("tr");

// td タグを作成
HtmlNode td = html.CreateElement("td");

// td へデータを設定
td.SetAttributeValue("class", "test"); // 属性 class に test を設定
td.InnerHtml = "表示テキスト"; // 文字列を設定

// 階層を設定
tr.AppendChild(td);
table.AppendChild(tr);

// HTML出力
html.Save("C:\\test.html", Encoding.UTF8);




出力は以下のようになります(C:\test.htmlの内容)



<table><tr><td class="test">表示テキスト</td></tr></table>



こんな感じです。
非常に簡単です。

上の例ではテーブルタグだけを出力していますが、例えば以下のようなデータがあるとします。



<!DOCTYPE html>
<html>
<head>
<meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="ja">
<title></title>
</head>
<body>
</body>
</html>



このデータをファイルから読み込むなりしてstringの変数に設定し、以下のようにするとデータを加工することが出来ます。



// 以下の変数に上記のHTMLの内容が入っている想定です。
// string strHtmlData;

// インスタンス作成
HtmlAgilityPack.HtmlDocument html = new HtmlAgilityPack.HtmlDocument();

// table タグを作成
HtmlNode table = html.CreateElement("table");

// tr タグを作成
HtmlNode tr = html.CreateElement("tr");

// td タグを作成
HtmlNode td = html.CreateElement("td");

// td へデータを設定
td.SetAttributeValue("class", "test"); // 属性 class に test を設定
td.InnerHtml = "表示テキスト"; // 文字列を設定

// 階層を設定
tr.AppendChild(td);
table.AppendChild(tr);

// HTMLを読み込む
html.LoadHtml(strHtmlData);

// タイトルタグを読み込んでHTMLのタイトルを設定する
HtmlNode head = html.DocumentNode.SelectSingleNode(@"//head//title");
head.InnerHtml = "HTMLのタイトルです";

// BODYを読み込んでテーブルを挿入します
HtmlNode body = html.DocumentNode.SelectSingleNode(@"//body");
body.AppendChild(table);

// HTML出力
html.Save("C:\\test.html", Encoding.UTF8);




出力は以下のようになります(C:\test.htmlの内容)



<!DOCTYPE html>
<html>
<head>
<meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="ja">
<title>HTMLのタイトルです</title>
</head>
<body>
<table><tr><td class="test">表示テキスト</td></tr></table>
</body>
</html>



ちょっとしたテンプレートエンジンですね。
便利です。

タグに複数の属性を設定する方法もあると思うんですが調べ中。

たまにはPRCOkusawa(Program Resource Center Okusawa)っぽい記事も書いてみました…(笑)

コメント

新規コメント
書き込む前にチェックしてください