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);
© 2011 Crazy's Blog Suffusion theme by Sayontan Sinha