Украина, Днепропетровск
(095) 478-70-11
Иногда нужно распарсить большой файл xml, обычно достаточно воспользоваться SimpleXML, но если файл большой то проще его привести к виду массива, а затем обратно в xml
$xml = simplexml_load_string($xmlstring, "SimpleXMLElement", LIBXML_NOCDATA); // получим строку $xml = new SimpleXMLElement("wares.xml", NULL, TRUE); //или получим файл, кому как удобно $json = json_encode($xml); $array = json_decode($json,TRUE);
Если нужно вернуть данные обратно в xml, например сохранить в файл
function array_to_xml( $data, &$xml_data ) { foreach( $data as $key => $value ) { if( is_numeric($key) ){ $key = 'item'.$key; } if( is_array($value) ) { $subnode = $xml_data->addChild($key); array_to_xml($value, $subnode); } else { $xml_data->addChild("$key",htmlspecialchars("$value")); } } } $xml_data = new SimpleXMLElement(''); array_to_xml($array,$xml_data); $result = $xml_data->asXML('/file/path/name.xml');