我尝试将简单的xml文件转换为数组,但转换不会将“id”属性保留为键数组。 XML源:
<mapi>
<categoriesList>
<category id="310">Autres</category>
<category id="574">Bière</category>
<category id="495">Biscuits</category>
<category id="444">Bonbons</category>
<category id="435">Champagne</category>
<category id="371">Cidre</category>
<category id="215">Condiments</category>
<category id="8">Fruits</category>
<category id="445">Poissons</category>
<category id="578">Produits laitiers</category>
<category id="539">Spiritueux</category>
<category id="259">Viandes</category>
<category id="126">Vin</category>
</categoriesList>
</mapi>
我喜欢像这样的简单数组:
array (
[310] => Autres
[574] => Bière
[495] => Biscuits
[444] => Bonbons
[435] => Champagne
[371] => Cidre
[215] => Condiments
[8] => Fruits
[445] => Poissons
[578] => Produits laitiers
[539] => Spiritueux
[259] => Viandes
[126] => Vin
)
感谢您的帮助 迪米特里
答案 0 :(得分:1)
这样的事情应该有效:
function XMLtoArray($xml) {
$xmlArray = array();
$dom = new DOMDocument;
$dom->load($xml);
$categories = $dom->getElementsByTagName("category");
foreach($categories as $category) {
$id = $category->getAttribute("id");
$xmlArray[$id] = $category->nodeValue;
}
return($xmlArray);
}
然后像这样调用函数:
$myArray = XMLtoArray("path/to/file.xml");
答案 1 :(得分:0)
<?php
include ("htmlparser.php");
$string = '
<mapi>
<categoriesList>
<category id="310">Autres</category>
<category id="574">Bière</category>
<category id="495">Biscuits</category>
<category id="444">Bonbons</category>
<category id="435">Champagne</category>
<category id="371">Cidre</category>
<category id="215">Condiments</category>
<category id="8">Fruits</category>
<category id="445">Poissons</category>
<category id="578">Produits laitiers</category>
<category id="539">Spiritueux</category>
<category id="259">Viandes</category>
<category id="126">Vin</category>
</categoriesList>
</mapi>
';
$html = str_get_html($string);
foreach($html->find('category') as $element){
$array[] = $element -> innertext ;
}
echo '<pre>';
print_r($array);
?>
您需要下载此库:http://simplehtmldom.sourceforge.net/manual.htm#section_dump
答案 2 :(得分:0)
使用SimpleXMLElement
这是一项非常简单的任务:
$sxe = simplexml_load_string($xml);
$asarray = array();
foreach ($sxe->categoriesList->category as $c) {
$asarray[(int) $c['id']] = (string) $c;
}
var_export($asarray);