使用xml :: simple - 无法获取特定的格式输出

时间:2013-11-15 06:17:37

标签: xml perl xml-parsing xml-simple data-dumper

输入文件:SN.xml

<?xml version='1.0'?>
<root>
<category cname='Cname1' id='c1'>
  <subcat key='3' sname='Subname1' sid='sid1'>
    <prod key='1' pname='Productname'>value1</prod>
  </subcat>
</category>
</root>

我正在使用这些代码将XML文件转换为哈希。

my $config = XML::Simple->new();
$config = XMLin('SN.xml');
print Dumper($config);

我的输出低于输出:

'3' => {
          'sid' => 'sid1',
              'sname' => 'Subname1',
                   'prod' => {
                               'content' => 'value1',
                               'pname' => 'Productname',
                               'key' => '1'
                                                   }
        },

我希望得到以下输出,请帮我搞定..

  '3' => {
             'sid' => 'sid1',
                     'sname' => 'Subname1',
                                       'prod' => {
                                                 '1' => {
                                                        'pname' => 'Productname',
                                                        'content' =>'value1'
                                                      },
                                                 }
             },

请建议我提供此结果的任何其他模块..

提前致谢!

1 个答案:

答案 0 :(得分:4)

my $xs = XML::Simple->new( ForceArray => 1 );
my $config = $xs->XMLin('SN.xml');
print Dumper $config;

即使只有一个嵌套元素,ForceArray选项也会强制嵌套元素放入arrayrefs中。这允许默认的KeyAttr选项启动并识别您的“关键”属性。