有没有办法使用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>
转换后的数组如下所示:
Array
(
[0] => Array (
[authorFirst] => Mark
[authorLast] => Twain
[title] => Innocents Abroad
)
[1] => Array (
[authorFirst] => Charles
[authorLast] => Dickens
[title] => Oliver Twist
)
)
答案 0 :(得分: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"
}
}
如果您的图书可能有嵌套元素,那么它会变得更复杂。
答案 1 :(得分:2)
如果您看一下Zend_Config_XML
的{{3}},您会看到它们使用SimpleXML几乎完全相同。我猜?他们建议你这样做。
答案 2 :(得分:0)
不幸的是,或者谢天谢地,根据你的观点,Zend Framework没有一套可用的类 - 就像现在一样。你必须使用普通的php(如simpleXML或DOMDocument)来完成这项任务,或者实现你自己的Zend类。
将XML文件转换为PHP数组将适合Zend_Filter。 Zend_Filter现在转换很多东西而其他东西正在开发中,但我没有看到像XML in the queue这样的东西。