我从此链接http://sapxi.dfssi.com/parser/book.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};
答案 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