はてなブックマークのRSSデータを加工

はてなブックマークのデータを引っ張ってきて適当に加工してHTMLで出力したかったので、PowerShellでやってみた。

$xml = New-Object xml
$xml.Load("http://b.hatena.ne.jp/coma2n/rss")
$xml.RDF.item | sort title | ConvertTo-Html title -title "はてなブックマーク" > "hatebu.html"
  1. まずは「New-Object」コマンドレットで「xml」(XmlDocument)クラスのインスタンスを生成する。
  2. 「Load」メソッドで自分のはてなブックマークRSSのアドレスを指定して、RSSデータを読み込む。
  3. RDF要素 > item要素に各ブックマークの情報が入っているので、そのリストをtitle要素をキーにしてソートする。
  4. それを「ConvertTo-Html」コマンドレットでHTMLに変換する。HTMLに出力したい情報としてtitle要素を指定する。あとHTML自体のtitleを「-title」オプションで指定する。
  5. 最後にそのHTMLを「Set-Content」コマンドレットで「hatebu.html」というファイルに出力する。

たった3行でこれだけの事ができる。
出力するHTMLも結構カスタマイズできるみたいなので実用的。いかすぜ!PowerShell!!

出力結果

テーブルとして出力される。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"  "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>はてなブックマーク</title>
</head><body>
<table>
<colgroup>
<col>
</colgroup>
<tr><th>title</th></tr>
<tr><td>* Dynicity,LLC ** XML Documentation Comments Guide *</td></tr>
<tr><td>.NET Tip of The Day: Speed up Visual Studio 2005</td></tr>
<tr><td>@IT:特集:PDC05レポート:動的プログラミング言語へと発展するC# 3.0とVB 9.0</td></tr>
<tr><td>【レポート】Grails eXchange 2007 - Java開発向けのフレームワーク・ディストリビューション「Grails」 (1) Grailsに対する「誤解」 | エンタープライズ | マイコミジャーナル</td></tr>
<tr><td>altnetconf - Scott Guthrie announces ASP.NET MVC framework at Alt.Net Conf - Jeffrey Palermo [MVP]</td></tr>
<tr><td>CodePlex</td></tr>
<tr><td>Cool Firefox Wallpapers - 1600 x 1200 Resolution</td></tr>
<tr><td>Ext JS - JavaScript Library</td></tr>
<tr><td>GOA - What is GOA WinForms? - System.Windows.Forms for Adobe Flash and Microsoft Silverlight</td></tr>
<tr><td>Home :: Castle Project</td></tr>
<tr><td>IE7pro for Internet Explorer7, improving your IE experience! -- Proxy switch, agent identification, block ads, customizable interface.</td></tr>
<tr><td>Json.NET - Home</td></tr>
<tr><td>jTemplates - template engine in JavaScript</td></tr>
<tr><td>LINQ to SQL (パート 3 - データベースの検索) - ScottGuさんのブログ翻訳</td></tr>
<tr><td>LINQ to SQL (パート 4 - データベースの更新) - ScottGuさんのブログ翻訳</td></tr>
<tr><td>LINQ to SQL (パート 5 - ASP:LinqDataSourceコントロールを使用してUIをバインディング) - ScottGuさんのブログ翻訳</td></tr>
<tr><td>LINQ to SQL (パート 9 - カスタムLINQ文をasp:LinqDatasourceコントロールと共に使用) - ScottGuさんのブログ翻訳</td></tr>
<tr><td>LINQ to SQL (パート6 - ストアドプロシージャを使用してデータを取得) - ScottGuさんのブログ翻訳</td></tr>
<tr><td>LINQ to SQL (パート7 - ストアドプロシージャを使用してデータベースを更新) - ScottGuさんのブログ翻訳</td></tr>
<tr><td>LINQ to SQL (パート8- カスタムSQL文を実行) - ScottGuさんのブログ翻訳</td></tr>
<tr><td>Log4js - The Logging API for JavaScript</td></tr>
<tr><td>masuidrive on rails &#187; Blog Archive &#187; masuidrive的プロジェクトの方針</td></tr>
<tr><td>Microsoft SQL Server: SQL Server 2005 Compact Edition</td></tr>
<tr><td>PowerGUI Community : Main</td></tr>
<tr><td>TechCrunch Japanese アーカイブ &#187; じっくりとSilverlightを理解しよう。本当に大切だから。</td></tr>
<tr><td>TortoiseSVN - The coolest Interface to (Sub)Version Control</td></tr>
<tr><td>Windows PowerShell : The new TabExpansion feature...</td></tr>
<tr><td>xfy | xfy Blog Editor: 快適なブログ生活を始めてみませんか?</td></tr>
<tr><td>すべらない名無し</td></tr>
<tr><td>印刷結果を画像ファイル化する仮想プリンタ「Virtual Image Printer driver」 - GIGAZINE</td></tr>
</table></body></html>