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

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

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

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

如果您search“SimpleXMLElement cdata”,我尝试了在Google上的第一次search,但是没有奏效。

您可能没有正确访问它。 您可以直接输出或将其转换为string。 (在这个例子中,铸造是多余的,因为无论如何回声自动)

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

LIBXML_NOCDATAsimplexml_load_file()函数的可选第三个参数。 这将返回所有CDATA数据转换为string的XML对象。

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

修复SimpleXML中的CDATA

这为我做了诡计:

 echo trim($entry->title); 

这对我来说是完美的。

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