Modificare file xml

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Salve ragazzi. Devo modificare un file xml con php. Ho un file xml di questo tipo:
Codice:
<?xml version="1.0" encoding="UTF-8"?>
<ricettario>
	<carne id="Pettodipolloallimone">
		<display-name lang="it">Petto di pollo al limone</display-name>
	</carne>
	<carne id="Tacchinoripieno">
		<display-name lang="it">Tacchino ripieno</display-name>
	</carne>
	<carne id="Rosbiffallatte">
		<display-name lang="it">Rosbiff al latte</display-name>
	</carne>
	<ricetta attach="Pettodipolloallimone">
		<title lang="it">Ricetta: Petto di pollo al limone</title>
		<sub-title lang="it">Preparazione</sub-title>
		<desc lang="it">Preparo il petto di pollo. .. .. . .. . </desc>
	</ricetta>
	<ricetta attach="Tacchinoripieno">
		<title lang="it">Ricetta: Tacchino ripieno</title>
		<sub-title lang="it">Preparazione</sub-title>
		<desc lang="it">Preparo il Tacchino ripieno. .. .. . .. . </desc>
	</ricetta>
	<ricetta attach="Rosbiffallatte">
		<title lang="it">Ricetta: Rosbiff al latte</title>
		<sub-title lang="it">Preparazione</sub-title>
		<desc lang="it">Preparo il Rosbiff al latte. .. .. . .. . </desc>
	</ricetta>
</ricettario>
Adesso, ho la necessità di cancellare tutto ciò che viene prima del tag "<ricetta" e sostituirlo con un altro file xml (dovrei aggiungere del cosice quindi). Considerando che il file che devo modificare è grande circa 30MB, come posso fare?

Ho provato
PHP:
$xml = file_get_contents('./ricette/ricettario.xml', FILE_USE_INCLUDE_PATH);
$xmlrand = file_get_contents('./ricette/random.xml', FILE_USE_INCLUDE_PATH);

$new = preg_replace('/^(.*?)<ricetta/', $xmlrand, $xml);
fwrite(fopen('new.xml', 'wb'), $new);
Solo che non mi funziona, mi restituisce il file originario (ricettario.xml) senza alcuna modifica. Perchè??
Il DOMDocument non mi sembra la soluzione adatta per questo problema.