Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [XML] appendChild sballa indent

    Ciao a tutti. ho un problema con xml.
    In pratica ho del codice che controlla la presenza di un file xml sul server. se questo è presente, "appende" un figlio "transazione" se invece il file non è presente, ne crea uno nuovo con una sola "transazione".
    Il mio problema è che nella prima ipotesi (cioè quando bisogna appendere un figlio al file già esistente) l'indent del file per il figlio appena inserito mi sballa...
    codice:
    <?xml version="1.0"?>
     <transazioni>  
      <transazione>     
       <da>9(Id_User_Bank)</da>
       <a>Cinema Antares</a>
       <oggetto>Prenotazione posti</oggetto>
       <valore>50</valore>
       </transazione> <transazione><da>9(Id_User_Bank)</da><a>Cinema Antares</a><oggetto>Prenotazione posti</oggetto><valore>50</valore></transazione></transazioni>
    il codice è il seguente
    Codice PHP:
    if(!file_exists('./xml/trans.xml')){
            
    $dom = new DomDocument('1.0');
            
    $transazioni $dom->appendChild($dom->createElement('transazioni'));
            
    $transazione $transazioni->appendChild($dom->createElement('transazione'));
            
    $da $transazione->appendChild($dom->createElement('da'));
            
    $da->appendChild($dom->createTextNode($_SESSION['iduser']."(Id_User_Bank)"));
           
    $a $transazione->appendChild($dom->createElement('a'));
            
    $a->appendChild($dom->createTextNode($_SESSION['destinatario']));
           
    $oggetto $transazione->appendChild($dom->createElement('oggetto'));
            
    $oggetto->appendChild($dom->createTextNode($_SESSION['oggetto']));
           
    $valore $transazione->appendChild($dom->createElement('valore'));
            
    $valore->appendChild($dom->createTextNode($_SESSION['valore']));
            
    $dom->formatOutput true;
           
    $trans $dom->saveXML();
           
    $dom->save('./xml/trans.xml');
         }
         else{
           
    $dom = new DomDocument('1.0');
           
    $dom DOMDocument::load('./xml/trans.xml');
           
    $transazioni $dom->getElementsByTagName("transazioni");
           
    $transazioni $transazioni->item(0);
           
    $transazione $transazioni->appendChild($dom->createElement('transazione'));
            
    $da $transazione->appendChild($dom->createElement('da'));
            
    $da->appendChild($dom->createTextNode($_SESSION['iduser']."(Id_User_Bank)"));
           
    $a $transazione->appendChild($dom->createElement('a'));
            
    $a->appendChild($dom->createTextNode($_SESSION['destinatario']));
           
    $oggetto $transazione->appendChild($dom->createElement('oggetto'));
            
    $oggetto->appendChild($dom->createTextNode($_SESSION['oggetto']));
           
    $valore $transazione->appendChild($dom->createElement('valore'));
            
    $valore->appendChild($dom->createTextNode($_SESSION['valore']));
            
    $dom->formatOutput true;
           
    $trans $dom->saveXML();
           
    $dom->save('./xml/trans.xml');
         } 

    Grazie in anticipo!

  2. #2
    ok il problema credo che sia di
    Codice PHP:
    $dom->formatOutput true
    che non funziona come vorrei, non tanto dell'appendchild..
    qualche idea?

  3. #3
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Intanto la costruzione:

    Codice PHP:
    $dom = new DomDocument('1.0');
    $dom DOMDocument::load('./xml/trans.xml'); 
    denota il fatto che non capisci pienamente quello che stai facendo.

    dovresti fare:
    Codice PHP:
    $dom = new DomDocument('1.0');
    $dom->load('./xml/trans.xml'); 
    Poi, le proprieta' del Dom le devi settare prima di chiamare qualsiasi metodo, quindi dovresti fare:
    Codice PHP:
    $dom = new DomDocument('1.0');
    $dom->formatOutput true;
    $dom->preserveWhiteSpace false;
    $dom->load('./xml/trans.xml');
    //e poi tutto il resto 

  4. #4
    Perfetto, funziona! gentilissimo, grazie per il tempo!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.