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

1) Как сохранить этот массив в файл в виде XML-файла?Сохранить массив как xml

2) Как читать этот файл, а затем массив?

+1

Рассматривали ли вы с помощью JSON сериализации его вместо этого? Я предвзято отношусь к XML. Слишком много жира = / – NullUserException

ответ

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

Использование SimpleXML

для # 1 (как в How to convert array to SimpleXML)

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

для # 2

$xml_data_as_object = simplexml_load_file("file.xml") 

возвращает объектное представление данных XML.

преобразовать объект в массив с:

$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 
); 
} 
Смежные вопросы