array(
name => text,
surname => text,
country => text,
date => text
)
1) How can I save this array to file as xml file?
2) How to read this file then as array?
XML provides the capability to display data because it is a markup language. JSON supports array. XML doesn't support array.
The most likely cause of this error is that the XML data you are trying to process is not valid. Alternatively, the XML data may contain non-standard characters or use a different character set encoding. There are several websites that can validate XML data.
// 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;
}
Using SimpleXML
for #1 (as in How to convert array to SimpleXML)
<?php
$xml = new SimpleXMLElement('<root/>');
array_walk_recursive($test_array, array ($xml, 'addChild'));
print $xml->asXML("file.xml");
for #2
$xml_data_as_object = simplexml_load_file("file.xml")
returns an object representation of the xml data.
convert the object to an array with:
$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
);
}
Take a look at the Pear module XML::Serializer -- which also includes XML::Unserializer.
http://pear.php.net/package/XML_Serializer/
http://articles.sitepoint.com/article/xml-php-pear-xml_serializer
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With