[Perl] XMLをJSONに変換

PerlでXMLをJSONに変換する処理は定番!…だと思っていたのですが、Web系のAPIサービスなどを使用しない人にとっては意外に馴染みがないらしく知らない人が多かったので参考までに。

use strict;
use utf8;
use JSON;
use XML::Simple;

my $xml = join('', <DATA>);

my $xs = XML::Simple->new;
my $ref = $xs->XMLin($xml);
my $json = JSON->new->utf8(0)->encode($ref);

print $json;

__DATA__
<?xml version="1.0"?>
<HelpSession>
<ApplyTo SKU="Server">
<TopicToDisplay>ms-its:%HELP_LOCATION%\rktools.chm::/rktools_overview.htm</TopicToDisplay>
<Context ID="SubSite">
<TaxonomyPath>_System_/Tools_Center</TaxonomyPath>
<NodeToHighlight>_System_/Tools_Center/Introduction_to_Resource_Kit_Tools</NodeToHighlight>
</Context>
</ApplyTo>
<ApplyTo SKU="Desktop">
<TopicToDisplay>ms-its:%HELP_LOCATION%\rktools.chm::/rktools_overview.htm</TopicToDisplay>
<Context ID="SubSite">
<TaxonomyPath>_System_/Tools_Center</TaxonomyPath>
<NodeToHighlight>_System_/Tools_Center/Introduction_to_Resource_Kit_Tools</NodeToHighlight>
</Context>
</ApplyTo>
</HelpSession>

サンプルなのでここでは省いていますが、XMLの構文が正しくなかったりする場合などにXMLinでコケることがあるので必要に応じてエラーハンドリングを入れてご使用ください。

    このサイトは reCAPTCHA によって保護されており、Google のプライバシーポリシー および 利用規約 に適用されます。

    reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

    頂戴したコメントは管理者に承認されるまで表示されません。また、メールアドレスが公開されることはありません。
    このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシー利用規約が適用されます。