2012-05-27 2 views
0

Я хочу сохранить приведенный ниже массив («name: $ array») в XML-файле с использованием XMLDOM. Я пробовал только с одним городом, и он работает хорошо. Но при интеграции кода в несколько массивов. он не работает.Преобразование/сохранение сложного массива в XML

Массив ( [0] => Массив ( [город] => Массив ( [0] => Редуит [1] => Кюрпип )

 [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

A Аналогичный ответ был дано here, который включает в себя функцию преобразования массива в XML и может быть легко адаптирована к тому, что вы пытаетесь сделать, я думаю.

+0

Да, но я единственная проблема заключается в том, как сохранить вложенные массивы без выравнивания результата и слить все. – user1419210

+0

Угадаю, что я не понимаю, что вопрос заполнен, тогда я использовал второй пример этого ответа, и он дал всю глубину массива в объект SimpleXML, из которого я сохранил его в файл. – GDP

+0

не работает, я попробовал. – user1419210