公開日:2013.09.03

SimpleXMLElementをserializeすると。PHPの仕様

テクログ

こんにちは、けーすけです。

 

気象庁のサイトから天気予報のXMLを取得してサイトに表示するということをやりました。

表示するだけなら簡単にできますが、問題は重いということです。

動きが非常にもっさりします。

 

そこで、天気予報のXMLをDBに保存することにしました。

SimpleXMLElementをserializeしてDBに書き込むのはできました。

 

が、問題はここから。

serializeしたSimpleXMLElementをunserializeして天気予報を表示しようとすると、します。

WordPressだと思って見て下さい。


//1.天気予報XMLのURL
$url="http://hoge.hoge/xxx.xml";
//2.天気予報を取得
$tenki_xml = simplexml_load_file($url);
//3.シリアライズしてDBに保存
update_option("tenki_xml",serialize($tenki_xml));
//4.DBから天気予報XMLを取得
$tenki_xml = get_option("tenki_xml");
//5.天気予報XMLをアンシリアライズ
$tenki_xml = unserialize($tenki_xml);

 

5でエラーになります。

余裕でできるだろうと高をくくっていたのでちょっとあせりました。

いろいろ調べてみたのですが、SimpleXMLElementに戻すのはめんどくさいことがわかりました。

 

今回は完結した処理だったので、生成したHTMLをDBに保存して済ませました。

XMLのデータを利用したい場合、stdClassか配列にするのが良いようです。

 

今後、アンシリアライズできるようになってほしいですね(^^;

けーすけでした(・ω・)

この記事を書いた人

core-corp

入社年2010年

出身地東京都

業務内容インフラ

特技または趣味ドライブ

core-corpの記事一覧へ

テクログに関する記事一覧