';序列化';SimpleXMLElement';不允许在会话xml值中插入错误

';序列化';SimpleXMLElement';不允许在会话xml值中插入错误,xml,serialization,simplexml,php,Xml,Serialization,Simplexml,Php,大家好,我有一个在codeigniter开发的网站。 我正在解析从服务器检索的xml,我想将返回值放入会话变量中。 但请将此错误返回给我: 致命错误:不允许出现带有消息“SimpleXMLElement的序列化”的未捕获异常“exception” 我的vps上的PHP版本是: PHP版本5.3.10-1ubuntu3.4 这是我的代码: $xml = new SimpleXMLElement(curl_exec($ch2)); $error2=curl_getinfo( $ch2, CURLIN

大家好,我有一个在codeigniter开发的网站。 我正在解析从服务器检索的xml,我想将返回值放入会话变量中。 但请将此错误返回给我:

致命错误:不允许出现带有消息“SimpleXMLElement的序列化”的未捕获异常“exception”

我的vps上的PHP版本是: PHP版本5.3.10-1ubuntu3.4

这是我的代码:

$xml = new SimpleXMLElement(curl_exec($ch2));
$error2=curl_getinfo( $ch2, CURLINFO_HTTP_CODE );
curl_close($ch2);
foreach ($xml->DATA as $entry){
    $code_travco = $entry->attributes()->COUNTRY_CODE;
    $name_en =  $entry->COUNTRY_NAME;
    $newdata = array(
        'code'  => $code_travco,
        'name_en'     =>  $name_en
    );
    $this->session->set_userdata($code_travco.'_nation_en', $newdata);      
 } 

可以在添加之前尝试将其更改为字符串,如:

foreach ($xml->DATA as $entry){
    $code_travco = (string) $entry->attributes()->COUNTRY_CODE;
    $name_en =  (string) $entry->COUNTRY_NAME;
    $newdata = array(
        'code'  => $code_travco,
        'name_en'     =>  $name_en
    );
    $this->session->set_userdata($code_travco.'_nation_en', $newdata);      
 } 

它工作得很好!但是为什么不是一根绳子呢?放置(字符串)之前是哪种格式?@AlessandroMinoccheri其资源类型和资源无法序列化,因此出现错误..感谢帮助和解释+1它不是资源类型,而是类型为
SimpleXMLElement
的对象。仅供参考。并且它不能像错误消息所说的那样被序列化。但它支持转换为字符串(不支持这种方式的资源类型)。这非常有用-我不理解的是为什么这不是一个错误500-相反,我的Firefox只是说页面无法显示。我只在我的错误日志中找到了这个错误#拔毛