Visualizzazione risultati 1 fino 5 di 5

Discussione: Rimuovere un nodo in un file XML con PHP

  1. #1
    Guest

    Exclamation Rimuovere un nodo in un file XML con PHP

    Salve a tutti!
    Sono infossato in un maledetto pezzo di codice per un lavoro e non riesco ad uscirne.

    il file xml è questo
    Codice:
    <?xml version="1.0"?>
    <prodotti>
      <prodotto visibile="1">
       <nome>dixan</nome>
       <costo>20 euro</costo>
       <tipo>casalingo</tipo>
      </prodotto>
    <prodotto visibile="1">
       <nome>Boom</nome>
       <costo>23 euro</costo>
       <tipo>casalingo</tipo>
      </prodotto>
    </prodotti>
    e il file Php è questo
    Codice PHP:
    <?php

    $xml
    = simplexml_load_file('prodotti.xml'); //carico il file utenti xml
    $flag=0;
    foreach(
    $xml->prodotto as $prodotto){
    $us=$prodotto->nome;
    $pw=$prodotto->costo;

    if((
    $us==$_POST['nomeprodotto'])and($pw==$_POST['costoprodotto'])) {echo "Il file è stato trovato e sarà eliminato";
    $flag=1;
    break;}
    }
    if(
    $flag==0) {echo "Il Prodotto non esiste nei nostri database";}
    ?>
    Ho provato con removeChild() ma forse non ho capito bene come funziona il DOM e come implementarlo...c'è un modo per farlo senza DOM?! Se non c'è mi potreste spiegare bene come implementarlo nella pagina? grazie

  2. #2
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Ma alla fine, registri le modifiche sul file? Devi usare il metodo asXML per sovrascrivere il file.

  3. #3
    Guest

    Predefinito

    Si devo registrarle sul file le modifiche...mi potresti scrivere come fare nella If per cancellare il nodo? Ho provato anche con Unset non ma non funziona :( non riesco ad uscirne e non trovo qualche guida ben fatto su internet...

    Aggiornamento:

    Ho aggiunto questo pezzo di codice che ho trovato su internet ma non produce nulla :/
    Codice PHP:
    if(($us==$_POST['nomeprodotto'])and($pw==$_POST['costoprodotto'])) {echo "Il file è stato trovato e sarà eliminato";

    unset(
    $prodotto);

    file_put_contents("prodotti.xml", $xml->asXML());

    $flag=1;
    break;
    }
    Ultima modifica di karl94 : 29-05-2011 alle ore 11.26.12

  4. #4
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Prova così:
    Codice PHP:
    <?php
    $file
    = 'prodotti.xml';
    $xml = simplexml_load_file($file); //carico il file utenti xml
    $flag = 0;

    $us = $_POST['nomeprodotto'];
    $pw = $_POST['costoprodotto'];
    foreach(
    $xml->prodotto as $prodotto){
    if(
    $prodotto->nome == $us && $prodotto->costo == $pw){
    echo
    'Il file è stato trovato e sarà eliminato';
    $flag = 1;
    $t = dom_import_simplexml($prodotto);
    $t->parentNode->removeChild($t);
    $xml->asXML($file);
    break;
    }
    }
    if(
    $flag == 0){
    echo
    'Il Prodotto non esiste nei nostri database';
    }
    ?>

  5. #5
    Guest

    Predefinito

    Funziona!! Grazie milleee! :D mi hai salvato...ho cercato in lungo e largo ma nessuno spiegava il procedimento chiaramente!! Grazie ancora!!

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •