XMinメモ

  • ForceArray

配列前提で値を取っていく時
素数1の場合、配列として読まれないのでForceArrayする

my $data = $xml->XMLin($target_file,ForceArray => ['playlist']);

while ($i<$MAX) {

    my $Id = $data->{'List'}[$i]->{'Item'}->{'Id'};
    $i++;
  • 値チェック

空の要素がある場合リファレンスを返すのでスカラーであることを確認する

#xml
<List>
<Item>
<Id>1</Id>
<Value>test1</Value>
</Item>
<Item>
<Id></Id>
<Value>test2</Value>

#Dumper
$VAR1 = {
      'Item' => [
                {
                  'Value' => 'test1',
                  'Id' => '1'
                },
                {
                  'Value' => 'test2',
                  'Id' => {}
                },


#perl
unless (ref $data->{'List'}[$i]->{'Item'}->{'Id'}){
    ...
    }else{
    # error
    }