3

入力ファイル: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'
                                                      },
                                                 }
             },

この結果を生成する他のモジュールも提案してください..

前もって感謝します!

4

1 に答える 1

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

このForceArrayオプションは、ネストされた要素が 1 つしかない場合でも、ネストされた要素を強制的に arrayrefs に配置します。これにより、デフォルトのKeyAttrオプションが開始され、「キー」属性が認識されます。

于 2013-11-15T08:23:06.103 に答える