電気ウナギ的○○

About Home

XML::Simple を使った Perl での XML 出力

shinoda (2014年10月 2日 06:15)
久しぶりに Perl で XML ファイルを扱うのでメモ。

例えば問い合わせに対して商品データを XML データで返す。

#!/usr/bin/perl

use 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/perl

use 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>

ばっちり。

電気ウナギ的○○

電気ウナギ的○○

About Back

コメント(0)

電気ウナギ的○○

電気ウナギ的○○

About Back

トラックバック(0)

トラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/3128

電気ウナギ的○○

About This Site

電気ウナギ的○○
岩国在住。広島で働く超零細IT企業社長のいわゆる社長日記。
何か、酒と食い物のことばかり書いているようで・・・お察しのとおり、肥満体です:-)


2011/06/24
iPhone用サイト公開

Create with jQuery, jQTouch.


CLOSE