ブログ  前の月  次の月 

たけまる / 2007-04


2007-04-02 Mon

_ フィードから JSON への変換方法を統一して JavaScript でラクする [atom][perl]

以前のエントリ [2007-03-31] で XML::FeedPP を使ったのは,まえに
JSONP 変換を作ったからです.

ところが,JSONP 変換サービスはあちこちにあります.たとえば,↓など
は老舗です.

XML を JSON に変換するサービス - ベータ版を公開 :: Drk7jp

では,どうして新たに JSONP 変換スクリプトを書いたかというと,変換
後の JSON のデータ構造を揃えたかったからです.

たとえば,RSS と Atom が混ざっていると,JavaScript でエントリを取
得するときにハッシュキーを使い分けなければなりません.また,XML か
ら JSON への変換方法が統一されていないと,ある要素が配列なのかハッ
シュなのかわからなかったりします.

というわけで,次のような特徴を持つ JSONP 変換スクリプトを作ってみ
ました.公開しますので自由に使ってください.

■ 特徴
- データ形式を指定したフィード (たとえば Atom 1.0) に変換してから
  JSON にする.フィードの種類がなんであっても,JavaScript で同じよ
  うに処理できる.
- XML から JSON への変換は,GData 準拠とする.たとえば,要素数がひ
  とつであればハッシュ,複数であれば配列となる.また,テキスト要素
  へのアクセスキーは '$t' である.
- 複数フィードをひとつにまとめられる.時刻順のソートもできる.
- ついでに,XML 間の変換もサポートした ([2007-03-31] に書いたよう
  に,Atom 0.3 <-> Atom 1.0 とか).

JSON への変換には,[2007-02-22] で紹介した Google::Data::JSON を使っ
ています.

まぁ,いまとなっては Yahoo PIPES でできることなんでしょうが,ビジ
ネス上の理由で使えなかったりすることもあるので,そういう方はこちら
を参考にしてください.下のほうでソースも公開しています.

■ ベースURI
http://teahut.sakura.ne.jp/t/feed.cgi

■ パラメータ
パラメータ 説明
uri フィードURI 複数指定するとひとつのフィードにまとめます
alt rdf, rss, atom03, atom10 変換後のデータ形式を指定します
jsonp JavaScript 関数名 この関数名で JSON を格納します
sort feed, date エントリをソートします

jsonp を指定しなければ,単なる XML 変換を行います.

■ 例
このブログのフィード (RDF) を Atom に変換して,JSON に変換し,
myfunc という JavaScript 関数 に渡します.

feed.cgi?alt=atom10&jsonp=myfunc&uri=http://teahut.sakura.ne.jp/b/cl.rdf

■ ソースコード
自由に使っていただいてかまいません.なお,XML::FeedPP には
[2007-03-31] のパッチを当ててください.

続きを読む

Referrer (Inside): [2007-06-23-1]

2007-04-01 Sun

_ フィード変換モジュールはどれが速いかベンチ [xml][perl]

前のエントリ [2007-03-31] で,「XML::FeedPP は XML::Feed より速い」
ということを書きました.参考までにベンチマークの結果を載せておきま
す.

RDF → Atom
モジュール 相対速度
XML::Feed 1.0
XML::FeedPP 8.7

Atom → RSS
モジュール 相対速度
XML::Feed 1.0
XML::FeedPP 2.5

予想では,Pure Perl で実装されている XML::FeedPP より,部分的に C
言語で実装されている XML::Feed のほうが速いと思っていたのですが,
逆でした (理由はしらない).

単純な XML 処理比較については,以下のエントリが参考になります.

Perl で XML の処理はどれが速いかベンチ : NDO::Weblog
たけまる / Perl - XML の処理はどれが速いかベンチ

最後に,ベンチマークに使ったスクリプトと,ベンチマーク結果を,載せ
ておきます.

続きを読む