如何使用Perl解析Twitter XML?

时间:2009-07-07 22:16:05

标签: xml perl parsing twitter

我正在使用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的任何其他方法也很好知道)

2 个答案:

答案 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中不同的嵌套数据结构。