Mae向きなブログ

Mae向きな日記のブログ版。ようやくこちらに移行してきました。

OPMLをパース

Blog Hacks ―プロが教えるテクニック&ツール100選」のHACK#50に「OPMLをパースしてRSSをアグリゲート」とあります。OPMLとは、RSSのリストとして使用することができるそうですが、百聞は一見に如かずです。はてなRSSから早速、opml.xmlをダウンロードしてみました。

中をよく見てみると、の中に、があって、そのまた中にというような入れ子の構造をしています。本の中のサンプルは、が入れ子になっている場合はうまく処理できないのではと思いますが、こんなときは、再帰を使うとうまく処理できそうです。試しに、xmlUrlだけを表示するような簡単なスクリプトを作成してみました。

#!/usr/bin/perl
use strict;
use warnings;
use XML::Simple;
use Data::Dumper;

my $debug = 0;
my $opml = 'opml.xml';

sub main {
    my $data = XMLin($opml,ForceArray => ["outline"]);
    print Dumper($data) if $debug;
    get_xmlUrl($data->{body}->{outline});
}

sub get_xmlUrl {
    my $outline = shift;
    for (@{$outline}) {
	if ($_->{xmlUrl}) {
	    print $_->{xmlUrl},"\n";
	} else {
	    get_xmlUrl($_->{outline});
	}
    }
}

main;
1;