0

我想解析一个简单的 XML 文档来散列。

<?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 中执行此操作?

4

1 回答 1

2

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'
                                 }
                               ]
                     }
        };
于 2013-01-22T20:46:02.387 回答