str*_*ade 5 php serialization object
我试图反序列化PHP对象.
警告:unserialize()[function.unserialize]:第42行的/var/www/app.php中不再存在节点
但为什么会这样呢?
即使我找到了一个解决unserialize simplexml对象的解决方案,很高兴知道为什么php无法反序列化对象?
要序列化simplexml对象,我使用此函数
function serializeSimpleXML(SimpleXMLElement $xmlObj)
{
return serialize($xmlObj->asXML());
}
Run Code Online (Sandbox Code Playgroud)
要反序列化simplexml对象,我使用此函数
function unserializeSimpleXML($str)
{
return simplexml_load_string(unserialize($str));
}
Run Code Online (Sandbox Code Playgroud)
Mik*_*ike 12
SimpleXMLElement包装libxml资源类型.资源无法序列化.在下一次调用时,表示libxml Node对象的资源不存在,因此反序列化失败.可能是一个允许您完全序列化SimpleXMLElement的错误.
您的解决方案是正确的,因为text/xml是任何XML的正确序列化格式.但是,由于它只是一个字符串,因此没有任何理由将XML字符串本身序列化.
请注意,这与"内置"PHP类/对象没有任何关系,但它是SimpleXML的实现细节(我认为PHP 5中的DOM).