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?