将XML转换为关联数组

Jak*_*ake 3 php xml zend-framework

有没有办法使用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>
Run Code Online (Sandbox Code Playgroud)

转换后的数组将如下所示:

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

Tim*_*ain 6

ZF也使用SimpleXML.对于你的例子:

$xml = simplexml_load_string($data);
$books = array();
foreach ($xml->books as $book) {
    $books[] = (array)$book;
}
Run Code Online (Sandbox Code Playgroud)

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"
  }
}
Run Code Online (Sandbox Code Playgroud)

如果你的书可能有嵌套元素,那么它会变得有点复杂.