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

2022-08-30 07:19:57

我注意到,在包含这些CDATA标签的文档上使用时,内容始终是。如何解决此问题?SimpleXMLElementNULL

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

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

如果你搜索“SimpleXMLElement cdata”,我尝试了在Google上的第一个点击,但这不起作用。


答案 1

您可能没有正确访问它。您可以直接输出它,也可以将其转换为字符串。(在这个例子中,投射是多余的,因为回声会自动这样做)

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

答案 2

是函数的可选第三个参数。这将返回 XML 对象,其中包含所有转换为字符串的 CDATA 数据。LIBXML_NOCDATAsimplexml_load_file()

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


在 SimpleXML 中修复 CDATA


推荐