首页 文章

PHP:如何处理<![CDATA [使用SimpleXMLElement?

提问于
浏览
85

我注意到在包含这些CDATA标记的文档上使用 SimpleXMLElement 时,内容始终为 NULL . 我该如何解决?

另外,抱歉在这里发布有关XML的垃圾邮件 . 我一直试图让基于XML的脚本现在工作几个小时......

<content><![CDATA[Hello, world!]]></content>

如果您搜索“SimpleXMLElement cdata”,我尝试了第一次点击谷歌,但这不起作用 .

4 回答

  • 7

    您可能无法正确访问它 . 您可以直接输出或将其转换为字符串 . (在这个例子中,铸造是多余的,因为无论如何回声自动完成)

    $content = simplexml_load_string(
        '<content><![CDATA[Hello, world!]]></content>'
    );
    echo (string) $content;
    
    // or with parent element:
    
    $foo = simplexml_load_string(
        '<foo><content><![CDATA[Hello, world!]]></content></foo>'
    );
    echo (string) $foo->content;
    

    你可能会有更好的运气 LIBXML_NOCDATA

    $content = simplexml_load_string(
        '<content><![CDATA[Hello, world!]]></content>'
        , null
        , LIBXML_NOCDATA
    );
    
  • 151

    LIBXML_NOCDATAsimplexml_load_file() 函数的可选第三个参数 . 这将返回XML对象,并将所有CDATA数据转换为字符串 .

    $xml = simplexml_load_file($this->filename, 'SimpleXMLElement', LIBXML_NOCDATA);
    echo "<pre>";
    print_r($xml);
    echo "</pre>";
    

    Fix CDATA in SimpleXML

  • 10

    这对我有用:

    echo trim($entry->title);
    
  • 36

    这对我来说非常合适 .

    $content = simplexml_load_string(
        $raw_xml
        , null
        , LIBXML_NOCDATA
    );
    

相关问题