【问题标题】:Parsing XML into hash with XML::Parser in Perl在 Perl 中使用 XML::Parser 将 XML 解析为哈希
【发布时间】:2013-01-06 04:15:51
【问题描述】:

我想将一个简单的 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 中做到这一点?

【问题讨论】:

  • 第一步是阅读metacpan.org/module/XML::Parser 的文档并遵循它。然后向我们展示您的代码,并告诉我们您到底遇到了什么问题或您不了解它的什么地方。

标签: perl parsing hash xml-parsing


【解决方案1】:

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'
                                 }
                               ]
                     }
        };

【讨论】:

    猜你喜欢
    • 2016-07-25
    • 2014-04-27
    • 2010-12-26
    • 1970-01-01
    • 2015-02-04
    • 2021-07-13
    • 2016-08-15
    • 2015-05-12
    • 1970-01-01
    相关资源
    最近更新 更多