Blank CDATA with PHP and SimpleXML
By default CDATA blocks in XML requests using SimpleXML are not returned and the node is blank. Here is an example using an RSS feed from DevShed.
SimpleXML Default
Request
$url = 'http://www.devshed.com/rss-feeds-11.xml';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
// Execute, close connection
$curl_result = curl_exec($ch);
curl_close($ch);
// Convert to SimpleXML
$xml = new SimpleXMLElement($curl_result);
print_r($xml);
Response
Notice that the <description> node is blank.
[0] => SimpleXMLElement Object
(
[title] => Exception Handling in PHP
[pubDate] => Mon, 04 Jan 2010 09:00:01 -0500
[link] => http://www.devshed.com/c/a/PHP/Exception-Handling-in-PHP/?kc=rss
[description] => SimpleXMLElement Object
(
)
[guid] => http://www.devshed.com/c/a/PHP/Exception-Handling-in-PHP/?kc=rss
)
SimpleXML using simplexml_load_string
Request
$url = 'http://www.devshed.com/rss-feeds-11.xml';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
// Execute, close connection
$curl_result = curl_exec($ch);
curl_close($ch);
$xml = simplexml_load_string($curl_result, 'SimpleXMLElement', LIBXML_NOCDATA);
print_r($xml);
Response
<description> is now filled in.
[0] => SimpleXMLElement Object
(
[title] => Exception Handling in PHP
[pubDate] => Mon, 04 Jan 2010 09:00:01 -0500
[link] => http://www.devshed.com/c/a/PHP/Exception-Handling-in-PHP/?kc=rss
[description] =>
In this second part of a two-part series on error and exception handling in PHP, we focus specifically on handling exceptions. This article is excerpted from chapter 8 of the book Beginning PHP and Oracle: From Novice to Professional, written by W. Jason Gilmore and Bob Bryla (Apress; ISBN: 1590597702).
- Exception Handling
Languages such as Java, C#, and Python have long been heralded for their efficient error-management abilities, accomplished through the use of exception handling. If you have prior experience working with exception handlers, you likely scratch your head when working with any l...
[guid] => http://www.devshed.com/c/a/PHP/Exception-Handling-in-PHP/?kc=rss
)
Demos
SimpleXML Default
SimpleXML using simplexml_load_string
