2013-01-08 80 views
5

我想以下列格式CakePHP中生成XML

<?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> 

我有一個數組如下形成我想翻譯上面的格式在數據庫中創建一個XML。

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' 
     ) 
    ) 
) 

我試圖

$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); 

我不能夠通過上面的代碼生成的XML列。

回答

5
$xmlObject = Xml::fromArray($category); 
$xmlString = $xmlObject->asXML();