久しぶりに Perl で XML ファイルを扱うのでメモ。
例えば問い合わせに対して商品データを XML データで返す。
#!/usr/bin/perluse XML::Simple;my $val = {'resultCode' => 0,'result' => {'modelNumber' => 'ZE91-CHINPOKO','suggestedPrice' => 234500,'detailDescription' => 'とても素敵なラジカセ付きカメラ',}};my $x = new XML::Simple;my $xml = $x->XMLout($val, RootName => 'results', NoAttr=>1);print qq(<?xml version="1.0" encoding="UTF-8" ?>\n);print $xml
この出力結果が、
<?xml version="1.0" encoding="UTF-8" ?><results><result><detailDescription>とても素敵なラジカセ付きカメラ</Detail description><modelNumber>ZE91-CHINPOKO</modelNumber><suggestedPrice>234500</suggestedPrice></result><resultCode>0</resultCode></results>
あれ?<result></result>間の項目の並びが ABC 順にソートされてるなあ。
そういう仕様だっけ?まあ、データ上は何の問題も無いが。
2商品を返すなら、
#!/usr/bin/perluse XML::Simple;my $val = {'resultCode' => 0,'result' => [{'modelNumber' => 'ZE91-CHINPOKO','suggestedPrice' => 234500,'detailDescription' => 'とても素敵なラジカセ付きカメラ',},{'modelNumber' => 'ZE94-OMEFERR','suggestedPrice' => 1800,'detailDescription' => 'これは一度試してみた方が良い',},]};my $x = new XML::Simple;my $xml = $x->XMLout($val, RootName => 'results', NoAttr=>1);print qq(<?xml version="1.0" encoding="UTF-8" ?>\n);print $xml
で、出力結果がこうなる。
<?xml version="1.0" encoding="UTF-8" ?><results><result><detailDescription>とても素敵なラジカセ付きカメラ</detailDescription><modelNumber>ZE91-CHINPOKO</modelNumber><suggestedPrice>234500</suggestedPrice></result><result><detailDescription>これは一度試してみた方が良い</detailDescription><modelNumber>ZE94-OMEFERR</modelNumber><suggestedPrice>1800</suggestedPrice></result><resultCode>0</resultCode></results>
ばっちり。
コメントする