Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    68

    Prendere un file xml da php

    sapete qual'è il codice in php per creare un albero di nodi di un file xml?
    praticamente mi serve per poi prendere il nodo che voglio io....
    ciao cioa
    il futuro è un impegno!forza ragazzi conquistiamo il mondo col buon senso!!!

  2. #2
    Dunque, forse sono stato un pò troppo criptico (anche se i concetti in gioco non sono ripercorribili in poche righe...) ora mi spiego meglio:
    - in php per poter lavorare su un file xml devi istanziare un oggetto domxml (...non mi dilungo troppo su questo, se poi vuoi approfondiamo) in questo modo (presuppongo quindi che si abbia a che fare con il file nomeFile.xml)
    $oggettoDom = domxml_open_file("nomeFile.xml");
    - ora non ti resta che usare i metodi (funzioni) che possiede l'oggetto appena creato; a noi interessa la funzione che data una query XPath (il linguaggio che serve per "navigare" i file xml) ci restituisca il nodo che la verifica (la query XPath):
    $nodo = xpath_eval(xpath_new_context($oggettoDom),"//INFO[@id = 2]");
    con la query XPath "//INFO[@id = 2]" diciamo al parser di scorrere il file xml fino a che non trova un tag <INFO> che ha l'attributo "id=2".
    In $nodo ora abbiamo il nodo che ci interessa e possiamo farci ciò che vogliamo.
    Per maggiori info consiglio anche i seguenti link:
    http://www.php.net/manual/en/ref.domxml.php
    http://www.w3schools.com/xml/default.asp
    http://www.w3schools.com/xpath/default.asp

    df-k

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    68
    grazie millee...ho provato...però ora se voglio che me lo restituisca come faccio:ad esempio io ho:

    <raccoltadati>
    <INFO id="2">
    <nrecord>00002</nrecord>
    <data>1/05/2004</data>
    <operatore>Giancarlo Mola</operatore>
    <userid>pol</userid>
    <pagina/>
    <testo>dhdfdgf </testo>
    <testata >La Repubblica</testata>
    </INFO>
    <INFO id="3">
    <nrecord>00002</nrecord>
    <data>1/05/2004</data>
    <operatore>Giancarlo Mola</operatore>
    <userid>pol</userid>
    <pagina/>
    <testo>dhdfdgf </testo>
    <testata >La Repubblica</testata>
    </INFO>
    etc...
    </raccoltadati>

    ho fatto:
    $oggettoDom = domxml_open_file("database.xml");
    $nodo = xpath_eval(xpath_new_context($oggettoDom),"//INFO[@id = 2]");

    se io faccio echo $nodo mi dà "Object"...
    io voglio che mi restituisca questo:
    <INFO id="2">
    <nrecord>00002</nrecord>
    <data>1/05/2004</data>
    <operatore>Giancarlo Mola</operatore>
    <userid>pol</userid>
    <pagina/>
    <testo>dhdfdgf </testo>
    <testata >La Repubblica</testata>
    </INFO>
    per applicargli un xslt....
    grazie mille in anticipo...
    il futuro è un impegno!forza ragazzi conquistiamo il mondo col buon senso!!!

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    68
    ho provato a fare questo:

    $oggettoDom = domxml_open_file("database.xml");
    $nodo = xpath_eval(xpath_new_context($oggettoDom),"//INFO[@id = 2]");
    $xh = xslt_create();
    // Processo il documento
    $result = xslt_process($xh, $nodo , 'xsl/palmare/stilefinale.xsl' ); {
    print $result;
    }
    xslt_free($xh);



    ma mi dà:

    Notice: Object to string conversion in c:\programmi\easyphp1-7\www\index.php on line 7

    Warning: Sablotron error on line 56: cannot open file 'c:/programmi/easyphp1-7/apache/Object' in c:\programmi\easyphp1-7\www\index.php on line 7

    aiutami...
    il futuro è un impegno!forza ragazzi conquistiamo il mondo col buon senso!!!

  5. #5
    vedo che hai fretta, questo è il codice spiccio, poi se vuoi ti spiego.

    function getFileContent($xslt = null)
    {
    $filename = '/xslt/'.$xslt;
    ob_start();
    readfile($filename);
    $result = ob_get_contents();
    ob_end_clean();
    return $result;
    }


    $nodoStringa = $nodo->dump_mem(true, 'UTF-8');
    $xslt = getFileContent($xslt);
    $arguments = array('/_xml' => $nodoStringa, '/_xslt'=>$xslt);
    $trans = xslt_create();
    $return = xslt_process($trans, 'arg:/_xml','arg:/_xslt', null, $arguments);
    xslt_free($trans);
    echo $return;

    df-k

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    68
    eseguendo questo:

    <?php
    $oggettoDom = domxml_open_file("database.xml");
    $nodo = xpath_eval(xpath_new_context($oggettoDom),"//INFO[@id = 2]");

    $xh = xslt_create();
    // Processo il documento
    $result = xslt_process($xh, $nodo , 'xsl/palmare/stilefinale.xsl' ); {
    print $result;
    }
    xslt_free($xh);

    function getFileContent($xslt = null)
    {
    $filename = '/xslt/'.$xslt;
    ob_start();
    readfile($filename);
    $result = ob_get_contents();
    ob_end_clean();
    return $result;
    }

    $nodoStringa = $nodo->dump_mem(true, 'UTF-8');
    $xslt = getFileContent($xslt);
    $arguments = array('/_xml' => $nodoStringa, '/_xslt'=>$xslt);
    $trans = xslt_create();
    $return = xslt_process($trans, 'arg:/_xml','arg:/_xslt', null, $arguments);
    xslt_free($trans);
    echo $return;

    ?>

    mi dà questo errore...

    Notice: Object to string conversion in c:\programmi\easyphp1-7\www\index.php on line 7

    Warning: Sablotron error on line 56: cannot open file 'c:/programmi/easyphp1-7/apache/Object' in c:\programmi\easyphp1-7\www\index.php on line 7

    Fatal error: Call to undefined function: dump_mem() in c:\programmi\easyphp1-7\www\index.php on line 23
    il futuro è un impegno!forza ragazzi conquistiamo il mondo col buon senso!!!

  7. #7
    questo dovrebbe andare, scusa ma ho fatto un errore io ;-)

    function getFileContent($xslt = null)
    {
    $filename = $xslt;
    ob_start();
    readfile($filename);
    $result = ob_get_contents();
    ob_end_clean();
    return $result;
    }

    $oggettoDom = domxml_open_file("database.xml");
    $nodo = xpath_eval(xpath_new_context($oggettoDom),"//INFO[@id = 2]");
    $nodoStringa = $oggettoDom->dump_node($nodo->nodeset[0]);
    $xslt = getFileContent('database.xsl');
    $arguments = array('/_xml' => $nodoStringa, '/_xslt'=>$xslt);
    $trans = xslt_create();
    $return = xslt_process($trans, 'arg:/_xml','arg:/_xslt', null, $arguments);
    xslt_free($trans);

    echo $return;

    df -k

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    68

    grazie milleeee

    ciao, ho sisolto finalmente il problemino...
    alla fine dopo che sono riuscito a capire il codice dopo ore di studio!!!!!!, ho ricavato la stessa cosa in poche righe di codice:

    <?php
    $oggettoDom = domxml_open_file("database.xml");
    $nodo = xpath_eval(xpath_new_context($oggettoDom),"//INFO[@id = 2]");
    $nodoStringa = $oggettoDom->dump_node($nodo->nodeset[0]);
    $arguments = array('/_xml' => $nodoStringa);
    $tr = xslt_create();
    $return = xslt_process($tr, 'arg:/_xml' , 'stilefinale.xsl', null, $arguments );
    xslt_free($tr);
    echo $return;
    ?>


    grazie, mi sei stato veramaente di grande aiuto.
    il futuro è un impegno!forza ragazzi conquistiamo il mondo col buon senso!!!

  9. #9
    figurati, alla prossima... :-)

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    68
    all'inizio mi andava bee ora guarda cosa mi dà:



    Impossibile visualizzare la pagina XML
    Impossibile visualizzare l'input XML tramite il foglio di stile . Correggere l'errore, quindi fare clic su Aggiorna, oppure riprovare in un momento successivo.


    --------------------------------------------------------------------------------

    Non valido al primo livello del documento. Errore durante l'elaborazione della risorsa "http://127.0.0.1/palmare/mostra.php?val=30". Riga 1, posizione 39

    <?xml version="1.0" encoding="UTF-8"?>


    nn so piu che fare....ho provato a eliminare quella stringa(<?xml version="1.0" encoding="UTF-8"?>) ma niente...

    sai dirmi qualcosa...nn so se dipende dall'xsl o xml...
    il futuro è un impegno!forza ragazzi conquistiamo il mondo col buon senso!!!

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.