2012-05-27 80 views
0

我想使用XMLDOM将下面的数组(“name:$ array”)保存在xml文件中。我尝试了只有一个城市,它运作良好。但是,将代码集成到多个阵列时。它失败。将复杂数组转换为XML

阵列 ( [0] =>数组 ( [城市] =>数组 ( [0] =>瑞德特 [1] => Curepipe的 )

 [distance] =>40 
    ) 

[1] => Array 
    (
     [city] => Array 
      (
       [0] => Array 
        (
         [0] => Reduit 
         [1] => Ebe 
        ) 

       [1] => Bees Village 
       [2] => Phoen Trunk Rd 
       [3] => Riv,Phoenix 
       [4] => St l Rd 
       [5] => Geoes Guibert St 
       [6] => Curepipe 
      ) 

     [distance] => 20  ) 

[2] => Array 
    (
     [city] => Array 
      (
       [0] => Array 
        (
         [0] => Reduit 
         [1] => Riv,Phoenix 
        ) 

       [1] => St l Rd 
       [2] => Geoes Guibert St 
       [3] => Curepipe 
      ) 

     [distance] =>155 
    ) 

[3] => Array 
    (
     [city] => Array 
      (
       [0] => Array 
        (
         [0] => Reduit 
         [1] => Ebene 
        ) 

       [1] => Belles Village 
       [2] => Phoenix Trunk Rd 
       [3] => Riverside,Phoenix 
       [4] => St Paul Rd 
       [5] => Georges Guibert St 
       [6] => Curepipe 
      ) 

     [distance] => 79 
    ) 

在这里我的工作

function saveToXml($flatArray,$flat){ 

    #create a domdocument 

    $domDocument = new DOMDocument('1.0','utf-8'); 

    $domDocument->formatOutput = true; 

    $domDocument->load('result.xml'); 

    $xpath = new DOMXPath($domDocument); 

    $results = $xpath->query('/mauritius/pair'); 

    $newItem = $results->item(0); 

    #get length of city in file 

    $lengthCity = $domDocument->getElementsByTagName('city')->length; 

    for($i=0;$i<$lengthCity;$i++){ 

    #check if city exist 

    if ($lengthCity >0){ 

     #delete all city 

     echo $lengthCity; 

     foreach ($results as $result){ 

      $city=$result->getElementsByTagName('city')->item(0); 

      $result->removeChild($city); 

     } 
    } 
} 

#loop through all values 

for ($row=0; $row<$flatArray;$row++){ 

#addElement 

$new_node = $domDocument->createElement('city'); 

$text_node = $domDocument->createTextNode($flat[$row]); 

$new_node->appendChild($text_node); 

$newItem->appendChild($new_node); 

} 

echo $domDocument->save('result.xml'); 

} 

是否可以将数组转换为xml?

回答

0

给出了类似的答案here其中包括一个将数组转换为XML的函数,并且可以很容易地适应您正在尝试执行的操作。

+0

是的,但我唯一的问题是如何保存嵌套数组而不展平结果并合并所有内容。 – user1419210

+0

猜猜我并不完全理解这个问题,我已经使用了第二个例子,并将数组的全部深度放入一个SimpleXML对象中,并将其保存到一个文件中。 – GDP

+0

它不工作,我试过。 – user1419210