Do you have a question? Post it now! No Registration Necessary. Now with pictures!
- Posted on
- simplexml and CDATA
August 7, 2006, 10:53 pm
rate this thread
Can someone please enlighten me on how to preserve the <![CDATA]>
element when parsing an xml file or string with simplexml. I'm using
libxml 2.6.16 and php 5.1.4.
I tried a few variations, I found at
$xml = simplexml_load_string($newsMLString, 'SimpleXMLElement',
$xml = simplexml_load_string($newsMLString);
$xml = simplexml_load_file('include/newsMLSpecs.xml');
$xml = simplexml_load_file('include/newsMLSpecs.xml',
In all cases the CDATA element is stripped out. I don't understand why
an xml parser would do that by default? It could be my setup but not
I'm using the NewsML spec found here:
Re: simplexml and CDATA
As far as I've been able to find out this is not possible. However, I
don't think there is a *functional* difference between preserving the
CDATA and what simplexml does. In CDATA sections, you can include e.g.
<i>some</i> HTML elements as-is. They, when parsing, will not result in
separate nodes in the resulting DOM. The XML that $xml->asXML()
generates, escapes the reserved characters (<, >, &) instead. As far as
I can tell this results in functionally the same XML.
Of course, it would be nice if simplexml would remember that a given
element originally held CDATA contents and output it as such. Perhaps
you can file an enhancement request for this.