2010-09-20 30 views
5
array(
name => text, 
surname => text, 
country => text, 
date => text 
) 

1) ¿Cómo puedo guardar esta matriz en un archivo como archivo xml?Guardar matriz como xml

2) ¿Cómo leer este archivo luego como una matriz?

+1

Ha considerado el uso de JSON serializar en su lugar? Estoy predispuesto contra XML. Demasiada grasa = / – NullUserException

Respuesta

7
// save 
$doc = new DOMDocument('1.0'); 
$doc->formatOutput = true; 
$root = $doc->createElement('root'); 
$root = $doc->appendChild($root); 
foreach($arr as $key=>$value) 
{ 
    $em = $doc->createElement($key);  
    $text = $doc->createTextNode($value); 
    $em->appendChild($text); 
    $root->appendChild($em); 

} 
$doc->save('file.xml'); 
// load 
$arr = array(); 
$doc = new DOMDocument(); 
$doc->load('file.xml'); 
$root = $doc->getElementsByTagName('root')->items[0]; 
foreach($root->childNodes as $item) 
{ 
    $arr[$item->nodeName] = $item->nodeValue; 
} 
5

Usando SimpleXML

para # 1 (como en How to convert array to SimpleXML)

<?php 
    $xml = new SimpleXMLElement('<root/>'); 
    array_walk_recursive($test_array, array ($xml, 'addChild')); 
    print $xml->asXML("file.xml"); 

para # 2

$xml_data_as_object = simplexml_load_file("file.xml") 

devuelve una representación de objeto de los datos XML.

convertir el objeto en una matriz con:

$xml_data_as_array = array(); 
foreach ($xml_data->root as $children) { 
    $xml_data_as_array[] = array(
    "name" => $children->name, 
    "surname" => $children->surname, 
    "country" => $children->country, 
    "date" => $children->date 
); 
}