Tutorials

Generating XML with CakePHP

Sending
User Rating 5 (1 vote)

Generating XML with CakePHP
Cake PHP LogoXML plays a pivotal role in transferring and storing data over the World Wide Web. It is a markup language, much like HTML, which is designed to carry data but not display it. If you need to carry out data transmission in any kind of web based application, you need to generate a XML file. The process of generating XML is a smooth sail, if you have the power of CakePHP with you. Let us take a tour of the various steps involved in generating XML using CakePHP development platform.

Steps Involved in XML Generation Via CakePHP:
1.       First off, edit the routes.php file present within the config directory of your CakePHP application. You will need to add the following short code snippet to the routes.php file in order  to enable XML extension parsing in CakePHP:
Router::parseExtensions('xml');
This snippet tells CakePHP to parse the XML extension. We are, now, ready to generate XML for our web application.

2.       In this step, we will set up Controller action that will be helpful in dynamically generating XML file in CakePHP and fetch data from the application. Setting up Controller will result in an error-free and well-formatted XML file in CakePHP. We have the option of configuring the setting of Controller action in such a way that it gets activated only if the XML makes a request. This means, when we have .xml in the end. To facilitate this procedure, you can use the Request Handler component. You have the option of either declaring the Request Handler at the top of the Controller or including it in the AppController so that it can be utilized throughout the application.

The task of a request handler is to detect and process requests. In the current scenario, it will allow us in detecting whether or not a particular request is XML. If the request is XML, we will deliver an XML file view and an empty layout. Otherwise, we will not perform any action. The following code snippet will help you in adding Request Handler to your application:
var$components= array('RequestHandler');
 Here’s a preview of the controller action while generating XML file in CakePHP:

<br />
function xmlgen($id=null){<br />
&nbsp;if ($this-&gt;RequestHandler-&gt;isXml())//check if xml request is made<br />
&nbsp;{<br />
&nbsp;$this-&gt;layout=&quot;empty&quot;;//empty layout for xml,create an empty layout in app/views/layouts/empty.ctp<br />
// find playlist&nbsp;&nbsp;&nbsp; from provided id<br />
&nbsp;$data=$this-&gt;Playlist-&gt;find(&quot;first&quot;,array(&quot;conditions&quot;=&gt;array(&quot;Playlist.id&quot;=&gt;$id));<br />
&nbsp;$this-&gt;set(compact(&#39;data&#39;));<br />
&nbsp;}<br />
Else<br />
{<br />
//don nothing if request is not xml ,or you can redirect somewhere.<br />
}<br />
}<br />

 
This action might look simple, just like any other action, but it will be operational only if the file is XML, otherwise it will not work.

3.       In this step, we will set up the view of our XML file in accordance to the Controller Action that we created in the previous step. We will be creating an XMl view for the action xmlgen() that we just created. These views will be created and stored in the XML folder created under the views folder. This means the view xmlgen.ctp will be stored under the following location:
app/views/yourcontrollername/xml/xmlgen.ctp

Suppose the name of our controller is ‘Favorites’, then xmlgen.ctp will be created under the following path:
app/views/favorites/xml/xmlgen.ctp
This is how the view for XML generation in CakePHP will appear:

<br />
&lt;?php<br />
echo $this-&gt;Xml-&gt;header();//XML header<br />
?&gt;<br />
&lt;favorites version=&quot;1&quot; xmlns=&quot;http://xspf.org/ns/0/&quot;&gt;<br />
&lt;title&gt;&lt;?php echo $data[&#39;title&#39;]; ?&gt;&lt;/title&gt;<br />
&lt;creator&gt;&lt;?php echo $data[&#39;author&#39;]; ?&gt;&lt;/creator&gt;<br />
&lt;link&gt;www.eaxmple.com&lt;/link&gt;<br />
&lt;trackList&gt;<br />
&lt;?php foreach($data[&#39;Songs&#39;] as $plist):?&gt;<br />
&lt;track&gt;<br />
&lt;location&gt;&lt;?php echo$plist[&#39;Song&#39;][&#39;loc&#39;]; ?&gt;&lt;/location&gt;<br />
&nbsp;&lt;creator&gt;&lt;?php echo$plist[&#39;Song&#39;][&#39;a_name&#39;]; ?&gt;&lt;/creator&gt;<br />
&nbsp;&lt;album&gt;&lt;?php echo$plist[&#39;Song&#39;][&#39;a_name&#39;]; ?&gt;&lt;/album&gt;<br />
&lt;title&gt;&lt;?php echo$plist[&#39;Song&#39;][&#39;sname&#39;]; ?&gt;&lt;/title&gt;<br />
&nbsp;&lt;duration&gt;&lt;?php echo $data[&#39;Song&#39;][&#39;Time&#39;]; ?&gt;&lt;/duration&gt;<br />
&lt;link&gt;&lt;?php echo$plist[&#39;Song&#39;][&#39;loc&#39;]; ?&gt;&lt;/link&gt;<br />
&lt;/track&gt;<br />
&lt;?php endforeach;?&gt;<br />
&lt;/trackList&gt;<br />
&lt;/ favorites &gt;<br />
&nbsp;

These were some of the essential steps involved in generating XML file using CakePHP framework. These steps show how CakePHP lets you create well-formatted XML file with minimum coding and least efforts.
 
Author Bio:- Steve Graham is a pro in PHP Web Development associated as a web writer with Xicom Technologies Ltd. A CMMI Level 3 firm, offering web based services to it's esteemed clientele worldwide.

Share your Thoughts