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

2022-01-18 00:00:00 xml tags php cdata

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

I noticed that when using SimpleXMLElement on a document that contains those CDATA tags, the content is always NULL. How do I fix this?

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

Also, sorry for spamming about XML here. I have been trying to get an XML based script to work for several hours now...

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

如果您搜索SimpleXMLElement cdata",我在 Google 上尝试了第一次点击,但没有成功.

I tried the first hit on Google if you search for "SimpleXMLElement cdata", but that didn't work.

推荐答案

您可能没有正确访问它.您可以直接输出它或将其转换为字符串.(在本例中,强制转换是多余的,因为 echo 无论如何都会自动执行)

You're probably not accessing it correctly. You can output it directly or cast it as a string. (in this example, the casting is superfluous, as echo automatically does it anyway)

$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 可能会让你的运气更好:


You might have better luck with LIBXML_NOCDATA:

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

相关文章