PHP: Как обращаться с <! [CDATA [с помощью SimpleXMLElement?
Я заметил, что при использовании SimpleXMLElement
в документе, который содержит те теги CDATA, содержимое всегда NULL
. Как это исправить?
Кроме того, извините за спам в отношении XML здесь. Я пытался заставить XML на основе script работать в течение нескольких часов...
<content><![CDATA[Hello, world!]]></content>
Я попробовал первый хит в Google, если вы ищете "SimpleXMLElement cdata", но это не сработало.
Ответы
Ответ 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
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
Ответ 3
Это сделало трюк для меня:
echo trim($entry->title);
Ответ 4
Это работает идеально для меня.
$content = simplexml_load_string(
$raw_xml
, null
, LIBXML_NOCDATA
);