• User Newbie

    Problemi con Dom Xml da Php4 a Php5

    Ciao a tutti scrivo per un problema che ho e non riesco a risolvere:

    Ho un un file xml e un file php che legge il suo contenuto. Per leggere il file xml ho utilizzato il Dom.
    Utilizzando EasyPhp 1.7 che utilizza php 4.4.3 ed abilitando le estensioni php_domxml.dll e iconv.dll tutto funzionava bene.

    Ora ho installato easyPhp 2.0 che utilizza Php 5 e mi da dei problemi quando apre le pagine php che contengono le istruzioni per leggere il file xml:

    $xmlString = "";
    foreach ( file("contatoreVisite/utenti.xml") as $node )
    {$xmlString .= trim($node);}
    $doc = domxml_open_mem($xmlString);
    $root = $doc->document_element();
    $records = $root->child_nodes();
    $stringxml="";
    $percorso=dirname(FILE);
    $percorso.="/contatoreVisite/utenti.xml";
    foreach(file($percorso) as $node){$stringxml.=trim($node);}
    $newRecord=$doc->create_element("utente");

    $newid=$doc->create_element("tempo");
    $newnum->set_content($time);
    $newRecord->append_child($newid);

    $newnum=$doc->create_element("scadenza");
    $newnum->set_content($scadenza);
    $newRecord->append_child($newnum);

    $newcategoria=$doc->create_element("ip");
    $newcategoria->set_content($ip);
    $newRecord->append_child($newcategoria);

    $root->append_child($newRecord);

    $doc->dump_file($percorso,false,true);

    }

    questo è l'errore che mi riporta:
    Fatal error: Call to a member function append_child() on a non-object in C:\Program Files\EasyPHP 2.0b1\www\tesina\index.php

    ho riportato solo l'errore su append_child ma lo da anche sui set_content

    Spero qualcuno mi possa aiutare.
    Grazie a tutti


  • User Attivo

    Ciao Tigrotti,
    non sono particolarmente ferrato nella gestine degli XML, ma a quanto credo di aver capito, DOM XML non è più supportato in php5 che implementa al suo posto l'estensione DOM. Alcune vecchie funzioni di DOM XML restano ancora mentre altre no...
    A quanto ho potuto verificare sia append_child che set_content fanno parte delle funzioni non più presenti in DOM.

    Quello che posso consigliarti è di cercare qualche script più aggiornato per la gestione dei doc XML o di tornare alla vecchia versione di php.

    In attesa che qualcuno possa contraddirmi e aiutarci, ti invito a tenerci informato sugli eventuali sviluppi del tuo problema!
    :ciauz:


  • User Newbie

    Ciao Ceccus ti ringrazio per aver risposto al mio quesito.:ciauz:

    Hai perfettamente ragione la versione 5 di Php alcune funzioni Dom_Xml non le supporta più, supporta Dom. E' compatibile con SimpleXMl che rispetto più semplice.

    Come dicevi, se si dispone di file php che leggono un file xml con il Dom_xml si deve utilizzare la versione 4.x.x di Php, il quale utilizza Dom ma supporta Dom_Xml.

    Ciao:yuppi: