Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CakePHP generate XML

Tags:

xml

cakephp

i want to create an XML in the following format

<?xml version="1.0" encoding="utf-8"?>
<categories>
    <category>
        <name>Hill Station</name>
        <slug>hill_station</slug>
    </category>

    <category>
        <name>Water Fall</name>
        <slug>water_fall</slug>
    </category>

    <category>
        <name>Wild Life</name>
        <slug>wild_life</slug>
    </category>

    <category>
        <name>Piligrim</name>
        <slug>piligrim</slug>
    </category>

    <category>
        <name>Archeology</name>
        <slug>archeology</slug>
    </category>
</categories>

i have an Array as follows form the database which i want to translate to the above format.

array(
    (int) 0 => array(
        'Category' => array(
            'id' => '4',
            'name' => 'Archeology',
            'slug' => 'archeology',
            'is_active' => true,
            'created' => '2013-01-08 07:34:07',
            'modified' => '2013-01-08 07:34:07'
        )
    ),
    (int) 1 => array(
        'Category' => array(
            'id' => '1',
            'name' => 'Hill Stations',
            'slug' => 'hill-stations',
            'is_active' => true,
            'created' => '2013-01-08 07:33:39',
            'modified' => '2013-01-08 07:33:39'
        )
    ),
    (int) 2 => array(
        'Category' => array(
            'id' => '3',
            'name' => 'Waterfall',
            'slug' => 'waterfall',
            'is_active' => true,
            'created' => '2013-01-08 07:33:54',
            'modified' => '2013-01-08 07:33:54'
        )
    ),
    (int) 3 => array(
        'Category' => array(
            'id' => '2',
            'name' => 'Wild Life',
            'slug' => 'wild-life',
            'is_active' => true,
            'created' => '2013-01-08 07:33:47',
            'modified' => '2013-01-08 07:33:47'
        )
    )
)

What i tried

$this->Category->recursive = -1;
$categories = $this->Category->find('all', array('order' => 'Category.name asc'));
debug($categories);

$category = array();
foreach($categories as $c){
    $cat['name'] = $c['Category']['name'];
    $cat['slug'] = $c['Category']['slug'];
    $cat['active'] = ($c['Category']['is_active'] == 1) ? true : false;


    $category['categories']['category'][] = $cat;
}
//debug($category);

$xml = Xml::build($category);

echo $xml;
debug($xml);

I am not able to generate the XML out via the above code.

like image 226
Harsha M V Avatar asked Jan 08 '13 10:01

Harsha M V


1 Answers

$xmlObject = Xml::fromArray($category);
$xmlString = $xmlObject->asXML();
like image 143
Sanganabasu Avatar answered Sep 21 '22 03:09

Sanganabasu