XML経由でブログを分割する手順
2007年2月15日(Thursday) 11:34pm WordPress ブログうるめねっとはたまに細胞分裂する。エントリが増えてくるとテーマごとにブログを分割する場合があるのだ。
以前はMySQLのデータを分割する手順で細胞分裂したが、今回はXML経由でチャレンジすることにした。
おおざっぱな手順は以下の通り。
- WordPress管理画面からエクスポート
- XMLエディタで必要なエントリだけ抽出して新ブログ用のファイルを作成
- 新ブログをインストール
- 編集したXMLファイルを新ブログの管理画面でインポート
- 旧ブログから重複したエントリを削除
このうち、エクスポート・インポートについてはWordPressをXML経由でExport2Importで書いたことと全く同じ内容を指している。
ダンプしたXMLファイルを何も編集しなければバックアップ・リストアになるが、今回はこれを加工することでブログをスプリットする。
なお、エクスポート・インポート以外に、新しいブログのテーマファイルを用意したり、オプション設定をやり直すという手順も必要になるが、あくまでもそれはごく普通のブログカスタマイズの範囲だ。
エントリさえ移行してしまえば後は何とかなるものだ。
ちなみに、この手順は新データ抽出が手作業なので、あまりに沢山のエントリを分割しようとすると限界が来る(限界は管理者の希望と根性で決定される)。
それ以上はXMLファイルをフィルタリングするスクリプトが必要になるが、その場合でも何をすべきなのかという知恵は手動の作業から体得可能なはずだ。
データの編集にXMLエディタを使おうとしているのは、ツリー操作でエントリ構造を崩さずにコピー&ペーストしたいから。
いままでXMLエディタを使ったことはないので、今回はまずEclipseのXML Buddyプラグインを使ってみた。
XML BuddyはOutlineウインドウにXMLファイルのツリー構造を表示してくれる。スクリーンショットに”item”が並んでいるが、これが個々のエントリだ。Outlineウインドウの右側に選択したノードのテキストが表示される(ファミコンとかいう文字列が見えているのは「レトロ調ゲームパッド」の記事のタイトル)。
ところが予想外なことに、それだけだった。
Outlineウインドウではアウトラインを表示してツリーの移動ができるのだが、ノードをコピーすることができない。削除することはできるのだが、1件ずつしか選択できない。
えらそうにXMLエディタというわりにはツリー操作ができないのかよ、と思ったが、仕方がない。
つぎに使ってみたのはFireFoxのFireBugエクステンション。XMLエディタではないが、ツリー操作できるので同じだろうと思った。
ところが、これもダメだった。特定のノードをコピーしてテキストエディタなどにペーストすること自体は可能なのだが、なぜか要素名を勝手に書き換えてしまう。すると、名前が合わなくてインポートの時点で本文が欠落したりして使い物にならない。
結局、あきらめてテキストエディタで原始的に編集することにした。
XMLエディタに期待したツリー構造を自らの手で再現して、ブログを分割することに成功。今後はそれなりに機能をもったXMLエディタを見つけ出せれば、冒頭のシナリオ通りに作業できそうだ。
今回は考えうる最悪のシナリオにまで堕ちてしまったが、それでも手動で記事を1件ずつ転載することやデータベース移行に比べたらはるかに楽だった(どれもやったことがある時点で何か間違っているかもしれない)。
もう何年も「すごいぞ」と言われながら一切すごくないXMLだが、そろそろ適切なツールに目星をつけておくと作業効率化につながるケースが出てきたと言える。それくらいリアルにはなってきたし、今後も着実に浸透するだろうという感触をつかんだ。
われわれの集合知が確かであれば、今年あたりXML周辺ツールがブレークするはずだ。xfyやYahoo Pipesは既に話題になっている。
2台同時USB充電「モバイルクルーザーツイン」
ロウアーミドルの衝撃
Javaデザインパターンハンドブック
インポッシブル・シンキング 最新脳科学が教える固定観念を打ち砕く技法
ほぼ日刊イトイ新聞の本