2011-07-18 16 views
3

Zend FrameworkとPHPを使用してXMLを配列に変換する方法はありますか?私はSimpleXMLを使用している人がこれを行うのを見てきましたが、Zend Frameworkを通して方法があるかどうかを知りたかったのです。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> 

変換された配列は次のようになります:

サンプルXMLは、私は次のようになり、配列に変換したい

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

答えて

2

あなたがZend_Config_XMLsource code ATY見れば、あなたはよ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 Frameworkには残念なことに、またはあなたの見解に感謝して、可能な限りすべてのクラスが用意されていません。このタスクには、単純なPHP(simpleXMLやDOMDocumentなど)を使用するか、独自のZendクラスを実装する必要があります。

XMLファイルをPHP配列に変換すると、Zend_Filterに収まるものになります。 Zend_Filterは現在多くのものを変換し、他のものは開発中ですが、XML in the queueのようなものは表示されません。