Grazie per il suggerimento,
Ho testato il codice proposto facendo alcune correzioni (quindi lo riposto) però succede una cosa strana.
Se provo a cancellare la prima news (ovvero $action == 0) il file diventa
<ELENCO><news dato = "" datas = ""></news></ELENCO>
Se provo a cancellare la seconda news il file diventa
<ELENCO></ELENCO>
Non capisco perchè...
Dov'è l'errore?
Di seguito il codice corretto:
Codice PHP:
$action = $_GET['action']; //passo la variabile $action che indica il posto che occupa la news da cancellare tramite GET
unset($data[0]['child'][$action]); //cancello l'elemento dell'array che contiene la news da cancellare
$numeroelementi = count($data[0]['child']); //conto gli elementi dell'array che contiene gli array (corpo, data)
$towrite = "<".$data[0]['name'].">"; //la stringa $towrite inizia con <elenco>
// imposto il ciclo for da 0 a 2 in questo caso e continuo la stringa
for ($a=0; $a < $numeroelementi; $a++){
$towrite .= "<news dato = \"".$data[0]['child'][$a]['attrs']['dato']."\" datas = \"".$data[0]['child'][$a]['attrs']['datas']."\"></news>";
}
$towrite .= "</".$data[0]['name'].">"; // l'array termina con </elenco>
$towritenc = utf8_encode($towrite); //codifica UTF8 potrei usare lo stesso nome di variabile, ma crepi l'avarizia, poi non mi raccapezzo più
//scrivo sul file la stringa $towrite che ora contiene tutto tranne la news cancellata o almeno lo spero
$fp = fopen($fdata, "w");
$fw = fwrite($fp, $towritenc);
fclose($fp);