When trying to parse xml with php’s SimpleXml you’ll notice that the SimpleXmlElement comes up empty.
Say you have the following xml structure:
<root> <username> <![CDATA[ Text you want to escape goes here... ]]> </username> </root>
When parsing that with SimpleXml the end result will simply be an empty tag:
<root> <username> </username> </root>
To solve this you need to supply “LIBXML_NOCDATA” as parameter to the “simplexml_load_file function“, like this:
$objXml = simplexml_load_file($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
Now the CDATA will be converted into normal strings.
When not reading the xml from a file, but if it comes from a xml post(an api for example), the same applies:
$objXml = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
Note, the LIBXML_NOCDATA can not be used when doing the following:
$ojbXml = new SimpleXmlElement($xml);