【问题标题】:'Serialization of 'SimpleXMLElement' is not allowed Error insert in session xml value [duplicate]'SimpleXMLElement'的序列化不允许在会话xml值中插入错误[重复]
【发布时间】:2013-03-18 09:50:34
【问题描述】:

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

致命错误:未捕获的异常 'Exception' 带有消息 'SimpleXMLElement' 的序列化是不允许的

我的 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);      
 } 

【问题讨论】:

    标签: xml serialization simplexml php


    【解决方案1】:

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

    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);      
     } 
    

    【讨论】:

    • 效果很好!但为什么不是字符串? put(字符串)之前是哪种格式?
    • @AlessandroMinoccheri 其资源类型和资源无法序列化,因此报错..
    • 感谢您的帮助和解释 +1
    • 不是资源类型而是SimpleXMLElement类型的对象。仅供参考。并且它不能像错误消息所说的那样被序列化。但它支持转换为字符串(哪些资源类型不支持这种方式)。
    • 这很有帮助——我不明白为什么这不是错误 500——相反,我的 Firefox 只是说页面无法显示。我只在我的错误日志深处发现了这个错误! #HairPullout
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2022-07-19
    相关资源
    最近更新 更多