Я заметил, что при использовании SimpleXMLElement
в документе, который содержит те теги CDATA, содержимое всегда NULL
. Как это исправить?
Кроме того, извините за спам в отношении XML здесь. Я пытаюсь получить скрипт на основе XML для работы в течение нескольких часов …
<content><![CDATA[Hello, world!]]></content>
Я попробовал первый хит в Google, если вы ищете «SimpleXMLElement cdata», но это не сработало.
Вероятно, вы не обращаетесь к нему правильно. Вы можете вывести его напрямую или передать его как строку. (в этом примере литье является излишним, поскольку эхо автоматически делает это в любом случае)
$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_NOCDATA
является необязательным третьим параметром функции simplexml_load_file()
. Это возвращает объект XML со всеми данными CDATA, преобразованными в строки.
$xml = simplexml_load_file($this->filename, 'SimpleXMLElement', LIBXML_NOCDATA); echo "<pre>"; print_r($xml); echo "</pre>";
Исправить CDATA в SimpleXML
Это сделало трюк для меня:
echo trim($entry->title);
Это работает идеально для меня.
$content = simplexml_load_string( $raw_xml , null , LIBXML_NOCDATA );