2011-07-18 81 views
3

有沒有一種方法來轉換使用Zend Framework和PHP的XML數組?我見過使用SimpleXML的人來做這件事,但我想知道是否有通過Zend Framework的方式。轉換XML到關聯數組

示例XML,我想轉換成數組是:

<library> 
    <book> 
     <authorFirst>Mark</authorFirst> 
     <authorLast>Twain</authorLast> 
     <title>The Innocents Abroad</title> 
    </book> 
    <book> 
     <authorFirst>Charles</authorFirst> 
     <authorLast>Dickens</authorLast> 
     <title>Oliver Twist</title> 
    </book> 
</library> 

轉換後的陣列將是這樣的:

Array 
( 
     [0] => Array ( 
         [authorFirst] => Mark 
         [authorLast] => Twain 
         [title] => Innocents Abroad 
        ) 
     [1] => Array (
         [authorFirst] => Charles 
         [authorLast] => Dickens 
         [title] => Oliver Twist 
        ) 
) 

回答

2

如果你看看ATY的Zend_Config_XMLsource code,你會看到他們使用SimpleXML做幾乎完全一樣。我猜?他們會建議你也這樣做。

6

ZF也使用了SimpleXML。對於你的例子:

$xml = simplexml_load_string($data); 
$books = array(); 
foreach ($xml->books as $book) { 
    $books[] = (array)$book; 
} 

var_dump($books)會再給你:

array(2) { 
    [0]=> 
    array(3) { 
    ["authorFirst"]=> 
    string(4) "Mark" 
    ["authorLast"]=> 
    string(5) "Twain" 
    ["title"]=> 
    string(20) "The Innocents Abroad" 
    } 
    [1]=> 
    array(3) { 
    ["authorFirst"]=> 
    string(7) "Charles" 
    ["authorLast"]=> 
    string(7) "Dickens" 
    ["title"]=> 
    string(12) "Oliver Twist" 
    } 
} 

如果你的本本可能嵌套的元素,然後就有點複雜。

+0

尼斯轉換成數組,偉大工程! –

0

遺憾的是,還是幸運的是取決於你的觀點,Zend框架沒有一組類一切可能 - 截至目前。您必須使用普通的PHP(如simpleXML或DOMDocument)來執行此任務或實現您自己的Zend類。

轉換一個XML文件到一個PHP數組是一些適合Zend_Filter的。右Zend_Filter的轉換,現在很多事情和其他正在開發中,但我沒有看到像XML in the queue東西。