はてなダイアリーの分割

はてなサブアカウントを作成できるというのを知って、さっそく作ってブログをもう一個作った。
で、本関係のエントリーを全部そっちに移そうと考えて、ダイアリーのデータをXMLにエクスポートした。
このXMLから本関係のエントリーだけを抽出して、新しいブログにインポートするわけだ。

ということでこの処理をPowerShellでさくっと書いてみた。

$xml = [xml](Get-Content coma2n.xml -encoding UTF8)
$xml.diary.day | ? { $_.body -notmach ".*\[(書籍|小説)\].*" } | % { $_.diary.RemoveChild($_) }
$xml.Save("coma2n_new.xml")
  1. Get-ContentでXMLを読み込んで「xml」型(実際にはSystem.Xml.XmlDocument)にキャストする。
  2. $xml.diary.dayで「//diary/day」というXPath式で検索した結果と同じ内容が得られる(こういうところ便利やね)
  3. そのノードの中から「書籍」と「小説」というタグが含まれていないものを削除する。
  4. 変更したドキュメントを別名で保存する。

このXMLをインポートして無事移設完了。