我正在使用cURL获取我的Twitter朋友时间轴的XML文件。 (API here。)
目前(虽然我愿意接受更多建议)我正在使用Perl来解析XML。这是我第一次使用Perl,我真的不知道自己在做什么。目前这是我的代码:
#!/usr/bin/perl
# use module
use XML::Simple;
use Data::Dumper;
# Create object.
$xml = new XML::Simple;
# Read XML file.
$data = $xml->XMLin("/tmp/data.xml");
# Print output.
print Dumper($data);
现在我想浏览XML并打印出每个人的姓名,然后打印他们发推文的内容。目前,当有像这样复杂的数据结构时,我还没有找到关于Perl的foreach循环的好指南。
我怎样才能做到这一点?
(在终端友好环境中解析XML的任何其他方法也很好知道)
答案 0 :(得分:12)
为什么不使用Net::Twitter API on CPAN?
答案 1 :(得分:4)
没有通用答案 - 这取决于您的data.xml的内容。 对于页面上的示例,您可以执行以下操作:
foreach my $unode ( values %{$data->{status}} ) {
print "$unode->{user}->{name} \t $unode->{created_at} \t $unode->{text} \n";
}
输出:
Doug Williams Tue Apr 07 22:52:51 +0000 2009 At least I can get your humor through tweets. RT @abdur: I don't mean this in a bad way, but genetically speaking your a cul-de-sac.
它的作用是 - 它获取名为'status'的hashref,取消引用它,然后遍历其值,这些值也是hashrefs,将它们分配给$ unode。
您还可以查看print Dumper $ unode以查看其他可用的内容。 另请注意,XML :: Simple在解析xml方面可能有点棘手 - 有时您可能需要传入额外的参数以使其在您希望的位置创建数组 - 请查看docs
编程Perl 第9章介绍了perl中不同的嵌套数据结构。