Работа с XML фалами

Иногда нужно распарсить большой файл xml, обычно достаточно воспользоваться SimpleXML, но если файл большой то проще его привести к виду массива, а затем обратно в xml

Преобразуем 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, например сохранить в файл

Преобразуем массив в 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');