(^^)v3 smile peace ver.3

> 別のところでファイルが分割されてしまう
HaloScan の XML はマルチバイト文字の途中で切られるという問題が直っていないですから、それのせいかも知れませんね。

Perl で書いてみました。XML は真面目に処理せずに正規表現でやったのでかなり速いと思います。次のコメントにコピペします。


#!/usr/bin/perl -w

use strict;
use utf8;
no encoding;

use vars qw(
%Thread
);

%Thread = ();

{
my $id = '';
my $contents = '';

while (my $line = <> {
if ($line =~ m/<threads+id="([^"]*)"s*>/) {
$id = $1;
$contents = '';
}
elsif ($line =~ m/</threads*>/) {
$Thread{$id} = '' unless (exists $Thread{$id});
$Thread{$id} .= $contents;
}
else {
$contents .= $line;
}
}
}

while (my ($id, $contents) = each %Thread) {
my $fh;
my $fname = sprintf('%s.xml', $id);

if (open $fh, ">$fname") {
print $fh <<"EOF";
<?xml version="1.0" ?>
<comments>
<thread id="$id">
EOF
print $fh $contents;
print $fh <<'EOF';
</comment>
</thread>
</comments>
EOF
close $fh;
}
else {
printf STDERR "%s: %sn", "$?", $fname;
}
}


あ! 一部スマイリーになってしまいました。バックスラッシュも消えてしまいました。

なぞなぞということにしておきます。


あ、後ろから 10 行目の
</comment>
の行は余計でした。

度々済みません。


うげっ!なんかすごいことになっている。
perl はなかなかうまいこと使いこなせないのですが、参考にさせていただきます。
NanoBlogger への実装方法についてもまだトライしている最中です。はたしてうまくいくでしょうか。

毎度^2。ありがとうございます。


Name:

URL:

Comment:  ? 

 

Commenting by HaloScan