2016-07-19 2 views
0

У меня есть файл XML с именем fonts.xmlПолучить содержимое файла в дом многомерный массив

<fonts> 
    <font> 
     <name>ABeeZee</name> 
     <category>sans-serif</category> 
    </font> 
    <font> 
     <name>Abel</name> 
     <category>sans-serif</category> 
    </font> 
</fonts> 

теперь я хочу его как многомерный массив

array = (


     0 => array(

         name => Azeebee 
         category => sans-serif 

        ), 
     1 => array(

         name => Abel 
         category => sans-serif 

        ) 
); 

я попытался это

$doc = new \DOMDocument(); 
    $doc->load('/fonts/font.xml'); 
    $nodelist = $doc->getElementsByTagName("font"); 
    $list = array(); 
    foreach ($nodelist as $n) 
    { 
     $value = $n->nodeValue; 
     $list[] = $value; 
    } 

    if (count($list) > 0) 
    { 
     echo $list[0]; 
    } 

Как я могу получить массив с несколькими измерениями, как это из вышеперечисленной структуры xml! Есть идеи?

ответ

1
$doc = new \DOMDocument(); 
$doc->loadXML($str); 
$nodelist = $doc->getElementsByTagName("font"); 
$list = array(); 
foreach ($nodelist as $n) 
{ 
    $temp = array(); 
    foreach($n->childNodes as $child) 
    // save all children but text node 
    if($child->nodeName != '#text') $temp[$child->nodeName] = $child->nodeValue; 
    $list[] = $temp; 
} 
print_r($list); 

demo

Смежные вопросы