[tips] XML ファイルの分割(追補)
2004/12/15 水 15:35
sb UsersGroup のパティオをうろうろしていて衝撃の事実を発見したので追補。
先の記事において、XML ファイルの分割時のファイル編集に使用できるソフトとして Windows の「メモ帳」を挙げていたのですが、「メモ帳」ではうまく動作しないことが分かりました。「メモ帳」で保存された XML ファイルをインポートすると、インポート処理後に1件のエントリーを取り込みました。
というメッセージが表示され、記事リストには何もかもが空っぽのエントリが1件作成されるという現象が起きます。対処としては、「メモ帳」以外で UTF-8 の文字エンコーディングが表示できるテキストエディタを探してきて使用する
ということになります。
さて、パティオでは原因は改行コード
と申し上げたのですが、スクリプトを読んだらちゃんと改行コード変換してから XML::Parser::Lite に食わせていたので、それはどうも嘘らしい。色々試したけれど、改行コードの違いでは現象が変わらなかったので、多分メモ帳の UTF-8 の扱い方が変なんでしょう…ううーん。気持ち悪い。
- comments (5)
- trackback (2) ⇒ http://distro.sweet-smile.org/tb.cgi/13
コメント(日付順)
JUGEMでお世話になった者です。
複数のサーバーに複数のsbを設置しております。
稼動はさせておりませんでしたが、 最近試みにJUGEMのログを移行してみました。
エントリ99件のXMLファイルは一発で読み込めたのですが、
1117件エントリのある別JUGEMのファイルは、何度試みても数分のインターバルの後にsbシステムのではなく(ロリポ)サーバーの500エラーが表示されてしまい移行できませんでした。
(こちらのsbも「99件」のXMLファイルは一発OKでしたが)
それでは、と「ロリポブログ」の方へ同じファイルをインポートしようとした所、
暫く時間を置いた後に (今度はロリポブログ管理画面に)
「ファイルが大きすぎます」というメッセージが表示されてやはりダメ。
困ってしまってパティオをうろついていてこちらを知りました。
「!」 ・・・まさに救いを得た気分だったのですが・・・
teraPadでも同じ事が起こるのです。(空記事1件)
「コードを指定して保存」するとタグエラーになったり
件数は出ても酷い文字化けだったり・・・
これからますます「移行」してくる人は増えると思いますが、
「白画面」の次はこれが「壁」になりそうな気もします。
平易で明確な対策(指針)が切望されるところです。
(「JUGEMのURLを指定するとインポートする」というのは無理でしょうか?)
☆ daniel さま
どうも、ご無沙汰しております。
苦戦なさっているようで。1000件の記事はさすがに大変ですね。
TeraPad ですが、ネットで評判を調べてみたらやはり UTF-8 の扱いが今ひとつのようで。
Windows環境だと、パティオで MKEditor というのを使ってうまくいった、とご報告がありました。
http://www.mk-square.com/home/software/mkeditor/
ちなみに、URI 指定は昔できていたんですが、今は JUGEM で管理画面にログインしないと XML を DL できない仕様になったため、メニューから削除されました。
でも、たとえできたとしても、途中終了するのは CGI が動作するサーバの制限ですから難しいですね。どの位の大きさのデータが扱えるかもサーバごとにまちまちですし、sb 側ではなかなか対処できないのが現状かと思います。
私個人は「最初から開始する記事番号と記事数を指定して DL できればいいのに」とか思ったりしますね。全記事を一気に DL だと、バックアップを取る時も不便ですから。
それでも古い記事にコメントがついた時とか、いろいろ運用で考慮する必要がありますけど…
ふうこさん、MKEditor 教えて下さいましてありがとうございました。
上手いことできました!
他の方の参考になるかもしれませんので此処で御報告させて戴きます。
MKEditor は鈍重で、8000行近いログを載せると全く実用になりません。
それでまずDLした jugem.xml はTeraPad で開いておき、
MKEditor側には以下の様な base.xml を作って表示しておきます。
<?xml version="1.0" encoding="utf-8" ?>
<blog><entries></entries></blog>
jugem.xml から <entry> ~ </entry> で区切られる部分を選択・コピーし、
上(MKEditor)の2行目の中間に挿入して「名前を付けて保存」します
( この時に 文字コード( UTF-8 )と 改行( LF )を指定しました )
インポートの成功を管理画面(&再構築後のblog)で確認できたら
TeraPad 上の jugem.xml から選択(コピーした)部分を削除します
約1000行単位でこの作業を繰り返し、サクッっと終わることが出来ました。
大感謝です。
(sb 間のログ移行も増えて来ると思いますが何らかの便宜を期待したいです)
こちらでは初めまして^^
JUGEMからの移動組も増えてきたことから、一応気づいた点を補足させて頂きます。
WindowsXPのメモ帳ですが、最初に空?の一文字(0xefbbbf)を入れているようです。保存した後にバイナリエディタなどで最初の3バイトを消してしまえば、きちんとインポートできるようになりました。
Windowsでは、"~"等がきちんと判別できないUTF-8エディタが多いようですね。私も最初はviviというエディタを使っていたのですが文字化けで;;どうやら多ヶ国対応の物でないとうまくいかないことが多いようです。以上僭越ながらわかっている範囲で^^;
☆ まめ さま
どうも、お出迎えが遅れまして。
>メモ帳
なるほど、BOM ですか。
大方そういうことかと思っていましたが、XML の編集にメモ帳を使う人は、バイナリエディタなんぞ見たことも食べたこともない人だろうなと(^^;
実は BOM とやらの存在は知っていたものの何者かは今ひとつ理解していなくて、この際なのでちょっと調べてみました。
結果、スクリプト側でファイル読み込み時に削除してあげても罰は当たらなそうな気がしました…(^^;