J'ai remarqué que lorsque vous utilisez SimpleXMLElement
sur un document contenant ces balises CDATA, le contenu est toujours NULL
. Comment puis-je réparer ça?
Aussi, désolé pour le spamming à propos de XML ici. J'essaie de faire fonctionner un script basé sur XML depuis plusieurs heures maintenant ...
<content><![CDATA[Hello, world!]]></content>
J'ai essayé le premier coup sur Google si vous recherchez "SimpleXMLElement cdata", mais cela n'a pas fonctionné.
Vous n'y accédez probablement pas correctement. Vous pouvez le sortir directement ou le convertir en chaîne. (dans cet exemple, le casting est superflu, car echo le fait automatiquement quand même)
$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;
Vous pourriez avoir plus de chance avec LIBXML_NOCDATA
:
$content = simplexml_load_string(
'<content><![CDATA[Hello, world!]]></content>'
, null
, LIBXML_NOCDATA
);
Le LIBXML_NOCDATA
Est le troisième paramètre facultatif de la fonction simplexml_load_file()
. Cela renvoie l'objet XML avec toutes les données CDATA converties en chaînes.
$xml = simplexml_load_file($this->filename, 'SimpleXMLElement', LIBXML_NOCDATA);
echo "<pre>";
print_r($xml);
echo "</pre>";
Cela a fait le tour pour moi:
echo trim($entry->title);
Cela fonctionne parfaitement pour moi.
$content = simplexml_load_string(
$raw_xml
, null
, LIBXML_NOCDATA
);