解析XML并显示内容

时间:2016-05-09 04:05:09

标签: xml perl

我从此链接http://sapxi.dfssi.com/parser/book.xml

获取XML

我想从第一个book元素中获取值。知道如何在Perl中解析它吗?

use strict;
use warnings;

use Data::Dumper;
use XML::Simple;
use LWP::Simple;

my $parser = new XML::Simple;

my $url = 'http://sapxi.dfssi.com/parser/book.xml';
my $content = get $url or die "Unable to get $url\n";
my $data = $parser->XMLin($content);

print Dumper($data);
print $data->{book}{title}->[0];

我总是得到

  

不是./xml_parser.pl第20行的HASH参考。

我想要的只是打印标题Book 1 title和作者价值。

输出将是这样的。

Book title: Book 1 title Author: Book 1 author 1, Book 1 author 2

提前感谢您的帮助。

应该打印$ data-> {book} - > [0] - > {title};

1 个答案:

答案 0 :(得分:3)

这是使用XML::LibXML的解决方案。 XML::Twig是您可能更喜欢的替代方案

use strict;
use warnings 'all';

use XML::LibXML;

use constant XML_URL => 'http://sapxi.dfssi.com/parser/book.xml';

my $doc = XML::LibXML->load_xml(location => XML_URL);

my ($book_1) = $doc->findnodes('/booklist/book[1]');

my ($title) = $book_1->findnodes('title[1]');
my @authors = $book_1->findnodes('author');

printf "Book title: %s Author: %s\n",
        $title->textContent,
        join(', ', map $_->textContent, @authors);

输出

Book title: Book 1 title Author: Book 1 author 1, Book 1 author 2