在XML中将XML解析为XML :: Parser
问题描述:
我想解析一个简单的XML文档以进行哈希。在XML中将XML解析为XML :: Parser
<?xml version ="1.0"?>
<catalog>
<book id = "bk101">
<author>Bob</author>
<title>Batman</title>
</book>
<book id = "bk102">
<author>Jerry</author>
<title>Superman</title>
</book>
</catalog>
预期的输出如下所示。
$VAR1 = {
'catalog'=>{
'bk101'=>[
'author'=>'Bob',
'title'=>'Batman'
]
'bk102'=>[
'author'=>'Jerry',
'title'=>'Superman'
]
}
}
我已经与XML::Simple
和其他库的帮助下完成这一点,但我有XML::Parser
做到这一点,而无需使用递归的。
我该如何在Perl中执行此操作?
答
XML::Hash::LX::xml2hash()接近你要找的东西:
#!/usr/bin/env perl
use strict;
use warnings qw(all);
use Data::Dumper;
use XML::Hash::LX;
my $hash = xml2hash q(<?xml version ="1.0"?>
<catalog>
<book id = "bk101">
<author>Bob</author>
<title>Batman</title>
</book>
<book id = "bk102">
<author>Jerry</author>
<title>Superman</title>
</book>
</catalog>
);
print Dumper $hash;
打印:
$VAR1 = {
'catalog' => {
'book' => [
{
'title' => 'Batman',
'author' => 'Bob',
'-id' => 'bk101'
},
{
'title' => 'Superman',
'author' => 'Jerry',
'-id' => 'bk102'
}
]
}
};
第一步是在https://metacpan.org/module/XML阅读文档: :解析器并遵循它。然后向我们展示您的代码,并告诉我们您究竟遇到了什么问题或者您不了解的内容。 – Perleone
为什么限制? – runrig