- WEBデザイン&WEBプログラミング -sei2の日記- - http://blog1.dd-company.com -

XMLパースエラー「No unserialized data available. Use XML_Unserializer ::unserialize() first.」が出た時。

PHP のPEAR モジュール「XML_Unserializer」で、
XMLパースエラー
「No unserialized data available. Use XML_Unserializer::unserialize() first.」
が出る時があります。
このエラーに対しての、対応方法を紹介します。

XML to PHP

最初に、「XML_Unserializer」とは何をするためのものか、簡単に説明します。
様々なWEBサービスで提供されているAPIを利用するときやRSSをいじりたいときなど、最近は少なからずXMLのデータ形式を扱うことがあります。
XMLそのままでは、PHPで使用しづらいので、そのデータを連想配列に変換する必要があります。
「XML_Unserializer」を使用すれば、PHPで簡単にXMLをパース(解析)して、連想配列に変換することが出来ます。

次にパースエラー「No unserialized data available. Use XML_Unserializer::unserialize() first.」が発生する理由ですが、いつもうまく行っているのに、突然エラーが出た時は、XML_Unserializerが処理できない文字コードがXMLの中に存在している場合が多いようです。
これは、XML側の問題で、ブラウザ(Chrome,Firefox)でXMLを直接開いても、エラー表示されエラー行もわかります。

その対処方法は、XMLデータを取得した後、その文字コードを変換または、除去してから、パースすることで解決します。
具体的には、次のようにします。

3~7行目と、8行目が対応策で、どちらか一方、または、両方使用します。