Supponiamo di avere un file xml così formattato:
codice:
<?xml version="1.0" encoding="iso-8859-1"?>
<service>
	<messages>
		<message id="1"><data>27/09/2006 16.39.47</data><sender>Fabrizio</sender><testo>test</testo><read>1</read></message>
		<message id="2"><data>27/09/2006 16.40.42</data><sender>Fabrizio</sender><testo>altro test</testo><read>1</read></message>
		<message id="3"><data>27/09/2006 16.52.38</data><sender>Fabrizio</sender><testo>terzo test</testo><read>1</read></message>
	</messages>
	<lastid>3</lastid>
</service>
Il file viene creato da un'applicazione delphi e viene modificato tramite php.
Ora, supponiamo che a me serva cancellare il nodo <message> con id="3", ho creato un ciclo così fatto:
Codice PHP:
if (file_exists('./ips/'.$ip.'.xml')) {
    
$xml simplexml_load_file('./ips/'.$ip.'.xml');
    
$messages $xml->messages;
    
//foreach($messages->message as $msg) {
    
foreach($messages->message as $key=>&$msg) {
        if (
$msg['id'] == $id) {
            
//unset($msg);
            //$msg = null;
            
unset($msg);
            break;
        }
    }
    
$fp fopen('./ips/'.$ip.'.xml','w');
    
fwrite($fp,$xml->asXML());
    
fclose($fp);

Ma ovviamente non funziona nessuno dei comandi adottati (gli altri sono quelli commentati, ovviamente).
Qualcuno ha qualche soluzione alternativa?