Skip to main content

Converting CakePHP array to xml

Here is a small function to convert cakephp's array from find statements to xml.

function cakeArrayToXML($arr,$keyParent = "rows"){
$arrayRow = "<$keyParent>";
foreach($arr as $tkey => $trow){
$arrayRow .= $this->cakeArrayToXML($trow,"row");
$arrayRow .= $this->cakeArrayToXML($trow,$tkey);
$arrayRow .= "<$tkey><![CDATA[$trow]]></$tkey>";
$arrayRow .= "</$keyParent>";
return $arrayRow;

To use it you would do something like
header("Content-type: text/xml;charset:UTF-8");
echo '<?xml version="1.0" ?>';
echo $this->EcOutput->cakeArrayToXML($this->Lyric->find("all",array("limit"=>2)));

Output would be an xml with a parent node of rows and a node name of row on each row, i guess you just have to test it to understand what i mean, haha.
Hope it helps.


Popular posts from this blog

LaMetric Python App

Creating a personal stock app for LaMetric is super simple, all you need is create an account at and have an url with your data. Depending on how you want the data to appear, the format should be in json and how it appears in the creation process.

I used appengine to host my data and used the metric data format

Here is the python code
import urllib2 import json # get stocks data using yahoo finance stocks = ['0002.HK', '0005.HK', '0011.HK', '0992.HK', '0066.HK'] url = "*" + ("%22%2C%22".join(stocks)) + "%22)%0A%09%09&" result = urllib2.urlopen(url) data = json.loads( # create frames based on the metric data format frames = [] for stock in data['query']['results']['quote']: …