アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記のような、プログラムを書いたのですが、上のタイトルはとれるのですが、連続して出てくるentryがどうしても取得できません。
何かご助言頂ければありがたいです。

my $url = "http://blog.livedoor.jp/takapon_ceo/atom.xml";

my $xml = get($url);
my $tree = XMLin($xml);

my $title = $tree->{title};
print "$title";

for (my $i = 0; $i <= 5; $i++) {
$id[$i] = $tree->{'entry'}->[$i]->{'id'};
print "$id[$i]";
}

よろしくお願いします。

A 回答 (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) とした場合のものです。
# インデントに全角空白を使っているので、コピーする場合はタブなどに置換して下さい。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/09/01 09:39

こんな感じ?


----------------------------------------------------
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";
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!