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

    [problema] XML DomDocument [HELP]

    Ciao, ho forse trovato una soluzione a un problema che mi assilla.
    Il problema è quello di indentare un file xml dopo che con SimpleXML aggiungo un nodo.

    La soluzione è creare un oggetto DOm e passargli caricargli il testo XML che poi con formatOutput = true; indenterà.

    Io però ho un problema nella parte evidenziata che e consiste nel fatto che MI CANCELLA TUTTO L'XML.

    (la parte unset ect. è x prova nonc onta li potrebbe esserci un insermieto di un nodo ...)



    <?php

    $xml = simplexml_load_file('portfolio.xml');

    unset($xml->code->codeItem[0]);


    $newXmlText = $xml->asXML();


    $dom = new DomDocument();

    $dom->loadXML($newXMLText);
    $dom->formatOutput = true;
    $formatedXML = $dom->saveXML();

    $fp = fopen('portfolio.xml','w+');
    fwrite($fp, $formatedXML);
    fclose($fp);


    ?>

    Vi prego se avete già idea di come fare oppure un link utile o qualcosa fatemi sapere... sto impazzendo

    grazie, Davide

  2. #2
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    codice:
    <?php
    
    $xml = simplexml_load_file('portfolio.xml');
    
    unset($xml->code->codeItem[0]);
    
    
    $newXmlText = $xml->asXML();
    
    
    $dom = new DomDocument();
    
    $dom->loadXML($newXMLText);
    $dom->formatOutput = true;
    $formatedXML = $dom->saveXML();
    
    $fp = fopen('portfolio.xml','w+');
    fwrite($fp, $formatedXML);
    fclose($fp);
    
    ?>

  3. #3
    Grazie!


    però non capisco perchè non mi ritrasmette il codice indentato quando faccio un inserimento di una nuova riga ma mi mette tutto su una sola riga

  4. #4
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Devi settare la proprieta' preservewhitespaces a false. Cioe'

    $dom->preserveWhiteSpace = false;
    $dom->formatOutput = true;

  5. #5
    Cavolo non riesco nemmeno ora!

    guarda se hai tempo ti metto il codice dell'inserimento della riga, è breve e l'XML.

    Prima di tutto ti ringrazion della grande disponibilità

    XML
    <?xml version="1.0" encoding="utf-8"?>
    <portfolio>

    <work>
    <url>imgportfolio/img.jpg</url>
    <link>site.it</link>
    <info>ewfgwegewgweg</info>
    </work>


    <work>
    <url>imgportfolio/img2.jpg</url>
    <link>lafabbricadigulliver.it</link>
    <info>ewfgwegewgweg</info>
    </work>
    </portfolio>

    il php in questione


    <?php

    //Ricevo le variabili dal form
    $post_url=$_POST['url'];
    $post_link=$_POST['link'];
    $post_info=$_POST['info'];

    //Carico il file da modificare
    $xml_file = simplexml_load_file("portfolio.xml");

    //Creo i nuovi nodi
    $work = $xml_file->addChild('work');
    $work->addAttribute('url','provaprovaprova');
    $url = $work->addChild('url',$post_url);
    $link = $work->addChild('link',$post_link);
    $info = $work->addChild('info', $post_info);

    $dom = new DomDocument();

    $newXmlText = $xml_file->asXML();

    $dom->loadXML($newXmlText); // same new xmlText as above
    $dom->preserveWhiteSpace = false;
    $dom->formatOutput = true; // here is where the magic happens
    $formatedXML = $dom->saveXML();

    //Aggiorno il file
    $file = fopen("portfolio.xml","w+");
    fwrite($file, $formatedXML);
    fclose($file);


    ?>


    Grazie ancora

  6. #6
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    I parametri dell'ogetto li imposti prima di chiamare qualsiasi metodo.

    Sbagliato:
    Codice PHP:
    $dom = new DomDocument();

    $newXmlText $xml_file->asXML();

    $dom->loadXML($newXmlText); // same new xmlText as above
    $dom->preserveWhiteSpace false;
    $dom->formatOutput true// here is where the magic happens 
    Corretto:
    Codice PHP:
    $dom = new DomDocument();
    $dom->preserveWhiteSpace false;
    $dom->formatOutput true// here is where the magic happens

    $newXmlText $xml_file->asXML();

    $dom->loadXML($newXmlText); // same new xmlText as above 

  7. #7
    GRAZIE MILLE!!!!!!! GRAZIE!

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.