【问题标题】:How do I use Perl to parse Twitter XML?如何使用 Perl 解析 Twitter XML?
【发布时间】:2010-11-08 20:55:54
【问题描述】:

我正在使用cURL 获取我Twitter 朋友时间线的XML 文件。 (APIhere.)

目前(尽管我愿意接受更多建议)我正在使用 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 的任何其他方法也很高兴知道)

【问题讨论】:

    标签: xml perl parsing twitter


    【解决方案1】:

    没有通用的答案 - 这取决于您的 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 中不同的嵌套数据结构。

    【讨论】:

    • 如果您点击 API 的链接,它就在那里。
    • @Naumcho:不要发布盗版书籍的链接。 @Eric:请参阅 perldoc perldsc,详细讨论 Perl 中的复杂数据结构。
    【解决方案2】:

    为什么不使用Net::Twitter API on CPAN

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-08
      • 2011-03-25
      • 1970-01-01
      • 2017-10-28
      • 2012-05-05
      相关资源
      最近更新 更多