• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:XML::Simpleの使い方について)

XML::Simpleの使い方について

このQ&Aのポイント
  • XML::Simpleを使ってプログラムを書いたが、連続して出てくるentryが取得できない。
  • アドバイスを求めている。
  • 使い方を教えてほしい。

質問者が選んだベストアンサー

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.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) とした場合のものです。 # インデントに全角空白を使っているので、コピーする場合はタブなどに置換して下さい。

eltech
質問者

お礼

サンプルコードまでご用意頂きありがとうございました。 ありがとうございました。 おかげさまで無事動作させることができました。 Dumperもデバッグに使えそうですね。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

こんな感じ? ---------------------------------------------------- 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"; }

関連するQ&A