|
↓は RSS/RDF/Atom 専用のためアイテム件数制限や要素制限の処理が入っていたので、 スクリプトが少し長くなってしまっていたけど、フィードに限らず汎用化して 単に XML ファイルを JSON 変換するだけなら、もっと単純になると思った。 http://kawa.at.webry.info/200605/article_1.html rss2json.pl 以下が XML→JSON 変換のスクリプト。 JSON で出力しておけば、JavaScript 側で XML.ObjTree とかを使って XML を JavaScript オブジェクトに展開する必要がなくなって速いです。 #!/usr/bin/perl XML::TreePP・JSON::Syck は CPAN でインストールする必要があります。 第1引数が入力XMLファイル名、第2引数が出力JSONファイル名です。 perl xml2json.pl input.xml output.jsonのように使用します。 引数を省略した場合は、標準入出力『-』を使います。 7: use JSON::Syck;と変更すれば、Audrey さんの JSON::Syck じゃなくて Pure Perl 実装の JSON モジュールを使えます。 XML::TreePP も Pure Perl なので、CPAN がない環境でも利用できます。 13: $tpp->set( force_array => [ 'rdf:li', 'item', 'entry' ] );には「複数登場することが予め分かっている要素名」を並べると吉です。 指定しなくても自動判別してくれるので、必須ではないです。 14: $tpp->set( attr_prefix => '@' );XML要素の属性名の先頭につけるプリフィックスを指定します。 デフォルトは「-」なので、JSON用ならE4X風に「@」指定が今のオススメです。 15: my $tree = $tpp->parsefile( $xml );と変更すれば、サーバ上のXMLファイルを拾って来ます。 XMLHTTPRequest ではないので、もちろん外のサーバにもアクセスできます。 XML→JSON のプロキシサービスとかもスグ作れますね。 (プロキシは不正利用されないようにURL制限とか入れる必要があるけど) |
| << 前記事(2006/05/01) | トップへ | 後記事(2006/05/02)>> |
| タイトル (本文) | ブログ名/日時 |
|---|---|
rss2json:RSS(XML)からJSONに変換する方法まとめ(てかYahoo!Pipesでいい...
いまさらかもしれないけどね。 ■Perlな方法 ・[JSON] コイツ、速いぞ... ...続きを見る |
creazy photograph 2007/12/17 02:11 |
| 内 容 | ニックネーム/日時 |
|---|
| << 前記事(2006/05/01) | トップへ | 後記事(2006/05/02)>> |