I’m hungry

おもにAmazonでの衝動買いや技術的な話をぼちぼちと。

SimpleXMLElement Objectをserializeするとエラー

2008-10-14 18:35:55 | ネットサービス/テクノロジ
XMLをsimplexml_load_file(string)してSimpleXML Element Objectを生成し、ファイル等に保存しようとしたところでエラー発生。orz

こんなコードを書いて、

<?php

$xml_file = "/tmp/test.xml";
$object = simplexml_load_file($xml_file,'SimpleXMLElement', LIBXML_NOCDATA);

// シリアライズ
$serialized_data = serialize($object);
// アンシリアライズしてdumpするだけ
var_dump(unserialize($serialized_data));

?>


実行すると、


[myuser@myserver ~]$ php simplexml_serialize_test.php

Warning: unserialize(): Node no longer exists in /home/myuser/simplexml_serialize_test.php on line 9

Warning: unserialize(): Node no longer exists in /home/myuser/simplexml_serialize_test.php on line 9

Warning: unserialize(): Node no longer exists in /home/myuser/simplexml_serialize_test.php on line 9

Warning: unserialize(): Node no longer exists in /home/myuser/simplexml_serialize_test.php on line 9

(略)

[myuser@myserver ~]$


しばらく自分のコードがおかしいのかと思って時間かけちゃったよ。orz
で、調べてみると

■SimpleXMLElementをserializeするとunserialize時にエラー
http://www.kgworks.net/blog/entry/20080712124141

とか。マニュアルのメモに対処方法が書いてあるとか言ってるので調べてみると

http://php.net/manual/ja/function.simplexml-load-string.php

「simplexml_load_***で生成したオブジェクト名(SimpleXMLObject)をスタンダードクラス(StdClass)に変更しないとunserialize時にエラーが起きる」

..........うーん。

しかも、

「シリアライズするフィールドにCDATAタグで囲まれたHTMLを含んでいるとエラーになる」

..........うーーーーーーーーーーーーーーーーーーん。orz

ということでserializeをやめてjson_encode/decodeにしたとさ。(弱っ)

Comment    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 「理系の人々」に反応してし... | TOP | アマゾン(Amazon)が「食品... »
最新の画像もっと見る

post a comment

ブログ作成者から承認されるまでコメントは反映されません。

Recent Entries | ネットサービス/テクノロジ