秀丸エディタを使ってWordPressのWXR形式ファイルをMediaWikiの形式にコンバート

WordPressで構築していたサイトがあるのですが、どうもブログとしてかいていくのには不向きなネタっぽいので、事典的に使えるMediaWikiに移行することを考えた。

※このデータはカテゴリー、タグ、通常の投稿のみがはいったものです

コンバートする前にまず行わなくてはいけないこと。

WXR形式のファイルをダウンロード

WordPressのツールにある、エクスポート機能を使ってデータをダウンロードします。

<?xml version="1.0" encoding="UTF-8" ?>
 <!-- This is a WordPress eXtended・・・・

というファイルが落ちてくるので、それを秀丸で開きます。

検索置換

ヘッダー・フッターをまずは入れ替え

<?xml ~略~</wp:author>

上記ヘッダーを除去してしまう。

こちらに入れ替え

<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.10/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.10/ http://www.mediawiki.org/xml/export-0.10.xsd" version="0.10" xml:lang="ja">

最後に閉じている

</rss>

</mediawiki>

に置換

[正規表現]タームIDを除去

タームIDを除去する

<wp:term_id>((\d)+)</wp:term_id>

削除

[正規表現]カテゴリーニックネームIDを除去

カテゴリーニックネームを除去する。

<wp:category_nicename>(.)+</wp:category_nicename>

削除

[正規表現]親カテゴリー情報を除去

親カテゴリー情報を除去する

<wp:category_parent>(.)+</wp:category_parent>

削除

[正規表現]親カテゴリー名を整形

<wp:cat_name>((.)+)</wp:cat_name>

<title>Category:\1</title>

[正規表現]親カテゴリー名を整形

<wp:cat_name>((.)+)</wp:cat_name>

<title>Category:\1</title>

未分類を削除

<wp:category>
 <title>Category:未分類</title>
 </wp:category>

削除

タグを変更

wp:category>

page>
wp:tag>

page>

[正規表現]タグスラッグ除去

タグスラッグを除去する

<wp:tag_slug>((.)+)</wp:tag_slug>

削除

[正規表現]カテゴリー説明文を本文へ

<wp:category_description>((.)+)</wp:category_description>

<revision>
 <text xml:space="preserve">\1</text>
 </revision>

<wp:tag_name>を<title>に

タイトルは改行してはいけない。<title>●●●</title>とする。
XMLなので、エンティティ化しないとうまく読み込めないことも。&amp;等。

wp:tag_name>

title>

<wp:term>~</wp:term>削除

<wp:term>~</wp:term>

で囲われたところがあるのでまとめて削除する

削除

generator削除

generatorはいらないので削除

<generator>****</generator>

削除

item>の置換

item>

page>

[正規表現]いらないタグを除去する

<excerpt:encoded></excerpt:encoded>

削除

<wp:post_id>(.)+</wp:post_id>

削除

<wp:post_date>(.)+</wp:post_date>

削除

<wp:post_date_gmt>(.)+</wp:post_date_gmt>

削除

<wp:comment_status>(.)+</wp:comment_status>

削除

<wp:ping_status>(.)+</wp:ping_status>

削除

<wp:post_name>(.)+</wp:post_name>

削除

<link>(.)+</link>

削除

<wp:(.)+$

削除

</wp:postmeta>

削除

<pubDate>(.)+</pubDate>

削除

<dc:creator>(.)+</dc:creator>

削除

<guid(.)+/guid>

削除

<content:encoded>

<revision>
</content:encoded>

</text>
 </revision>
<category domain="category" nicename="(.)+">((.)+)

[[Category:\2
<category domain="post_tag" nicename="(.)+">((.)+)

[[Category:\2
</category>

]]

一時的に閉じタグを除去する

改行とタブを全て消した状態で、

</text></revision>

削除

タグの置換をチェック

タグ(MediaWikiなので、カテゴリーに変更します)のページ内容に「××のカテゴリ」を入れます。

<title>((.)+)</title></text></revision>

<title>\1</title><revision><text xml:space="preserve">\1のカテゴリ。</text></revision>

ページ内容・HTMLのチェック

<img>はいらなければ除去する

置換して、アップされている画像をMediaWikiに移設する場合は以下の通り。
※example.comを例にしています
※WordPressはファイルがかぶらないようになっているのでなんとかなります

[正規表現]classを除去する

altの除去

class=[\'"]([^\'"]+)[\'"]

削除

alt=[\'"]([^\'"]+)[\'"]

削除

width=[\'"]([^\'"]+)[\'"]

削除

height=[\'"]([^\'"]+)[\'"]

削除

画像

<img((.)+)src=[\'"]([^\'"]+)[\'"]((.)+)>

↓読み込めるファイルに変換する

[[File:\2]]
\[\[File:http://(.)+/wp-content/uploads/(.)+/(.)+/((.)+)\]\]

↓URLを除去する(http://~uploads/xx/xx/フォルダのところ)

[[File:\4]]

内部リンク

エクスポートしたWordPressサイトのaタグのリンク先を変更する。
※example.comはWordPressサイトのURL

<a(.)+href=\"http://example.com(.)+\">

↓タイトルをリンクに変更する(※MediaWikiにページとして、インポートするのを前提で)

[[
</a>

]]

外部リンク

<a(.)+href=\"((.)+)\"((.)*)>((.)+)</a>

↓タイトルをリンクに変更する(※MediaWikiにページとして、インポートするのを前提で)

[\2 \4]
target="_blank"

削除

<wbr />タグ

改行してもいいよタグなので、これはそのままで。

CDATAに変換

タグを入れてしまうとうまく読み込まれないため、CDATAで囲う
でも、思ったようにはうまくいかないことも。

タグは外しておいたほうがいいかもしれないが、ネストしたリストなどが難しいので悩むところ・・・。

<text xml:space="preserve">

<text xml:space="preserve"><![CDATA[
</text>

]]></text>

attachment

画像などの添付ファイルもダウンロードしてしまったら、その記事を除去しておきます。