我需要将xml转换为数组:
XML
?xml version="1.0" standalone="yes"?>
<DocumentElement>
<article>
<a>TEST></a>
<b>TEST2</b>
<c>TEST3</c>
</article>
<article>
<a>TEST4></a>
<b>TEST5</b>
<c>TEST6</c>
</article>
</DocumentElement>
我需要一个像这样的数组:
$testArray = array(
array('a' => TEST, 'b' => 'TEST2', 'c' => TEST3),
array('a' => TEST4, 'b' => 'TEST5', 'c' => TEST6)
);
我的第一次尝试是:
$file = "product.xml";
$productArray = @simplexml_load_file($file) or
die ("ERROR loading file");
但是用这种方法我得到一个数组。
有关如何做到这一点的任何建议?
如果XML的结构是动态的,则可以创建几个循环,这些循环将提取值以及元素的名称,并将它们逐个添加到结果数组中。
$file = "product.xml";
$productArray = simplexml_load_file($file) or
die ("ERROR loading file");
$articles = [];
foreach ( $productArray->article as $article ) {
$newElement = [];
foreach ( $article as $element ) {
$newElement [ $element->getName() ] = (string)$element;
}
$articles[] = $newElement;
}
print_r($articles);
给...
Array
(
[0] => Array
(
[a] => TEST>
[b] => TEST2
[c] => TEST3
)
[1] => Array
(
[a] => TEST4>
[b] => TEST5
[c] => TEST6
)
)
当你这样做
$productArray = @simplexml_load_file($file) or die ("ERROR loading file");
你会得到一个对象。
如果你想循环浏览每篇文章,你可以这样做
foreach($productArray ->children() as $article) {
echo $article->a. ", ";
echo $article->b. ", ";
echo $article->c. ", ";
}
下面的代码将介绍您的问题的XML。
<?PHP
$link = 'yourxmlfile.xml'; //XML link
$xml = simplexml_load_file($link); //load xml
//Loop
foreach($xml -> article as $item){
echo "<strong>A:</strong> ".utf8_decode($item ->a)."<br />";
echo "<strong>B:</strong> ".utf8_decode($item ->b)."<br />";
echo "<strong>C:</strong> ".utf8_decode($item ->c)."<br />";
echo "<br />";
}