Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente bannato
    Registrato dal
    Feb 2009
    Messaggi
    39

    SimpleXml - Aggiungere Nodo

    Ragazzi, una mano...

    Con SimpleXML attivo, riesco a creare uno nuovo child ed aggiungere i vari attributi ad un xml, il problema è che i vari child, vengono stampati di fila, creando una lunga riga, e non tante righe una sull'altra.

    Con questo codice:

    Codice PHP:
    <?php  
    $stringa
    "<elemento nome=\"nome\" url=\"cartella/nome\" peso=\"peso\" tipo=\"estensione\" data=\"data\" ora=\"ora\"></elemento>\n";  

    $xml simplexml_load_file("simple.xml");   

    $nuovoElemento $xml->addChild("elemento");  
    $nuovoElemento->addAttribute("nome""domenico.jpg");  
    $nuovoElemento->addAttribute("url""../archivio/domenico.jpg"); 
    $nuovoElemento->addAttribute("peso""35.01 MB"); 
    $nuovoElemento->addAttribute("tipo""jpg");  
    $nuovoElemento->addAttribute("ora""20.00");  

    echo 
    "<pre>".htmlentities($xml->asXML())."</pre>";  

    $f fopen("simple.xml""w");  
    fwrite($f,  $xml->asXML());  
    fclose($f);  

    ?>

    Ottengo questo:


    Codice PHP:
    <?xml version="1.0"?>  
    <menu>  
    <elemento peso="35.01 MB" tipo="jpg" ora="20.00"/><elemento nome="domenico.jpg" url="../archivio/domenico.jpg" peso="35.01 MB" tipo="jpg" ora="20.00"/><elemento nome="domenico.jpg" url="../archivio/domenico.jpg" peso="35.01 MB" tipo="jpg" ora="20.00"/><elemento nome="domenico.jpg" url="../archivio/domenico.jpg" peso="35.01 MB" tipo="jpg" ora="20.00"/></menu>
    Evidentemente sbagliato.
    Ma non era più semplice passargli la variabile stringa, in questo caso inutilizzata, invece di fare tutto quel casino?

    Mi aiutate a capire come aggiungere correttamente un nodo ?

  2. #2
    Utente bannato
    Registrato dal
    Feb 2009
    Messaggi
    39
    niente???

  3. #3
    Utente bannato
    Registrato dal
    Feb 2009
    Messaggi
    39
    Nessuno ha qualche idea?
    Troppo complesso o troppo stupido?

  4. #4
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Tropo stupido

    Ci sono diverse modalita' per salvare il xml indentato: o trasformi il tuo simplexml in domdocument e usi la sua proprieta' formatoutput (e' la cosa piu' semplice e veloce), o usi la classe pear xml_beautifier, o usi tidy se ce l'hai installato...

  5. #5
    Utente bannato
    Registrato dal
    Feb 2009
    Messaggi
    39
    mi faresti qualche esempio? Hai qualche link che mi possa spiegare la prima procedura?

    guarda, ho fatto così, ma non capisco perchè mi da errore:

    Codice PHP:
    <?php    

    $stringa 
    "prova stringa"
    $xml simplexml_load_file("bad.xml");     

    function 
    prova($var){ 
    $nuovoElemento $xml->addChild($var);    

    $f fopen("bad.xml""w");    
    fwrite($f,  $xml->asXML());    
    fclose($f);   


    prova($stringa); 

    ?>
    Codice PHP:
    Fatal errorCall to a member function addChild() on a non-object in /web/htdocs/www.miosito.com/home/app/crea.php on line 7 
    scusa se rompo ma sono agli inizi col php..

  6. #6
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Ti da errore perche' dovresti studiare la differenza tra una variabile globale e una locale.

    Per quanto riguarda l'indentazione, supponi di avere una variabile
    Codice PHP:
    $mioxml $xml->asXML() //che e' quello che vuoi scrivere nel file, ma non e' formattato 
    puoi fare:
    Codice PHP:
    $dom = new DOMDocument('1.0');
    $dom->preserveWhiteSpace false;
    $dom->formatOutput true;
    $dom->loadXML($mioxml);
    echo 
    $dom->saveXML();//qui invece e' formattato, lo puoi scrivere nel file 

  7. #7
    mi intrometto un pò in maniera maleducata, ma a me
    Codice PHP:
    $dom->preserveWhiteSpace false
    $dom->formatOutput true
    non funziona...
    o meglio, non funziona se modifico un file già esistente...

  8. #8
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Originariamente inviato da Pedro.Zena
    mi intrometto un pò in maniera maleducata, ma a me
    Codice PHP:
    $dom->preserveWhiteSpace false
    $dom->formatOutput true
    non funziona...
    o meglio, non funziona se modifico un file già esistente...
    posta tutto il codice rilevante...

  9. #9

  10. #10
    Utente bannato
    Registrato dal
    Feb 2009
    Messaggi
    39
    Nulla, io sono ancora sulla differenza tra variabile globale e locale.

    Codice PHP:
    $stringa "prova stringa"
    $xml simplexml_load_file("bad.xml");      

    function 
    prova($var){ 
    $nuovoElemento $xml->addChild($var);


    prova($stringa); 
    Le variabili stringa e xml sono globali, e non danno problemi, è la variabile nuovoElemento che fa casino, ma non capisco perchè!

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.