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 に答える