Connecting Tech Pros Worldwide Help | Site Map

simplexml and CDATA

 
LinkBack Thread Tools Search this Thread
  #1  
Old August 7th, 2006, 10:45 PM
mandric@gmail.com
Guest
 
Posts: n/a
Default simplexml and CDATA

Hello,

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
http://us3.php.net/manual/en/functio...oad-string.php

$xml = simplexml_load_string($newsMLString, 'SimpleXMLElement',
LIBXML_NOCDATA);
echo $xml->asXML();

$xml = simplexml_load_string($newsMLString);
echo $xml->asXML();

$xml = simplexml_load_file('include/newsMLSpecs.xml');
echo $xml->asXML();

$xml = simplexml_load_file('include/newsMLSpecs.xml',
'SimpleXMLElement', LIBXML_NOCDATA);
echo $xml->asXML();

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
sure.

I'm using the NewsML spec found here:
http://public.yahoo.com/~ron/news/specs.xml

Any ideas?

Thanks!

Milan


  #2  
Old August 8th, 2006, 07:55 AM
Gertjan Klein
Guest
 
Posts: n/a
Default Re: simplexml and CDATA

mandric@gmail.com wrote:
Quote:
>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.
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</iHTML 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.

Gertjan.
--
Gertjan Klein <gklein@xs4all.nl>
  #3  
Old August 8th, 2006, 11:15 PM
mandric@gmail.com
Guest
 
Posts: n/a
Default Re: simplexml and CDATA


Gertjan Klein wrote:
Quote:
mandric@gmail.com wrote:
>
Quote:
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.
>
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</iHTML 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.
>
I think the answer is use DOM if your needs are not simple. ;)
Which should be available if SimpleXML is.
http://us3.php.net/manual/en/ref.dom.php

Thanks Gertjan.

 

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Popular Articles

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over 220,989 network members.