XML_Serializer

08/10/03 XML_Serializer このエントリーをはてなブックマークに追加

PHP4でXMLファイルのパースは難しい。PHP5から採用されているsimple_xmlが使えないからだ。

そこで、PEARのXML_Serializerを利用することになる。しかし、ひとつ問題が判明した。

XML_Serializerは、例えば楽天ウェブサービスで商品情報をパースするとき、取得商品データーが複数のときと単数のときで、挙動が違うのだ。

複数のときは、オブジェクト内で配列構造を作ってくれるが、単数の場合は、配列にはならない。

よって、

foreach($object->Item as $item){ ~ }

を利用したプログラムだと、商品数が単数の場合は、上手く動かない。困った……。

先日、PHP5で動かしていたプログラムを、PHP4のサーバー上で動かそうとしたら、smple_xmlが’undefined function’となってしまい、PEARのXML_Serializerを利用したときに判明した。

しかし、解決策はあっさり見つかった。

こちらのエントリー
http://zap.hakox.net/index.php?e=401

XML_Serializerのオプション設定で、配列化したいアイテム名を設定してあげれば、問題はすべて解決する

‘forceEnum’ => array(‘Item’,…)

これでPHP4でXMLをパサーしたい場合も安心。
ちなみに、simple_xmlは自動的にやってくれるため、PHP5を利用するなら、問題ない。

確か同じような問題が、JavascriptのJSONscriptRequestでもあった気がする。
こっちはデーターの数を判別して力技でなんとかした。

このエントリーをはてなブックマークに追加
Share on Tumblr



書き手のプロフィールはこちら ⇒ かん吉プロフィール

当ブログの記事に共感していただけたら、また読みに来ていただけると嬉しいです。読んでくれる方の数が多くなると、更新するヤル気に繋がります(^^)

ツイッターGoogle+ミクシイページでも、更新履歴を流してます。



当ブログの更新をメールで受け取れます

配信: FeedBurner
読者さんのお声をお聞かせください

トラックバックURL: