- ベストアンサー
XML::Simpleの使い方について
- XML::Simpleを使ってプログラムを書いたが、連続して出てくるentryが取得できない。
- アドバイスを求めている。
- 使い方を教えてほしい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
use Data::Dumper; をして Dumper($tree->{entry}) を表示すれば分かりますが、その実体は配列ではなくハッシュです。 このハッシュのキーは各エントリの id で、id は投稿順に文字列昇順となっていますから、キーをソートして値を取り出せばOKです。 # IDリストの取り出し(新着順にしたいので降順にソート) my @entries_id = sort {$b cmp $a} keys %{$tree->{entry}}; foreach my $id (@entries_id) { print "$id\n"; # 各要素へのアクセス my $entry = $tree->{entry}->{$id}; print "$entry->{title}\n"; print "$entry->{summary}->{content}\n"; } # この結果は $tree = XMLin($xml) とした場合のものです。 # インデントに全角空白を使っているので、コピーする場合はタブなどに置換して下さい。
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
こんな感じ? ---------------------------------------------------- use encoding 'UTF-8', STDOUT => "shiftjis"; use LWP::Simple; use XML::Simple; my $url = "http://blog.livedoor.jp/takapon_ceo/atom.xml"; my $xml = get($url); my $tree = XMLin($xml, forcearray=>1); my $title = $tree->{title}->[0]; print "$title\n"; for my $entry (@{$tree->{entry}}) { $id[$i] = $entry->{'id'}->[0]; print "$id[$i]\n"; }
お礼
サンプルコードまでご用意頂きありがとうございました。 ありがとうございました。 おかげさまで無事動作させることができました。 Dumperもデバッグに使えそうですね。