Visualizzazione dei risultati da 1 a 10 su 13

Hybrid View

  1. #1

    parsare l' xml di risposta di una pagina web

    Ciao a tutti,
    il titolo non è molto chiaro e quindi mi spiego meglio.
    Ho un sistema elettronico che mi fa da server web ed in risposta ad una get ottengo questo:
    codice:
    Content-Type: text/xmltent-Type: text/xml
    Connection: keep-alive
    
    
    <?xml version = \"1.0\" ?>
    <inputs>
    
    
    Qui tutti i vari valori
    
    
    </inputs>
    Come faccio a leggero tramite php ?
    In poche parole vorrei creare una pagina in php che effettua un get al server web e legga la risposta che viene fornita in formato xml.
    Sul web non trovo niente.
    Grazie mille

  2. #2
    http://php.net/manual/en/function.si...-load-file.php

    Quote Originariamente inviata da inventor4fun Visualizza il messaggio
    Sul web non trovo niente.
    Ahi, ahi, ahi...

  3. #3
    Quote Originariamente inviata da lucavizzi Visualizza il messaggio
    Grazie mille,
    anche se sembra semplice non riesco.
    Codice PHP:
    $url 'http://.........com:801/?aggiorna_XML'
    $xml simpleXML_load_file($url,"SimpleXMLElement",LIBXML_NOCDATA); 
    if(
    $xml ===  FALSE) { 
     } else { } 
    mi resituisce questo errore

    codice:
    Warning: simplexml_load_file(http://......com:801/?aggiorna_XML): failed to open stream: Connection timed out in /web/htdocs/............................php on line 40 Warning: simplexml_load_file(): I/O warning : failed to load external entity "http://................................com:801/?aggiorna_XML" in /web/htdocs/........................................php on line 40
    però se metto l'indirizzo del mio file xml sembra funzionare perché ottengo questo:
    codice:
    This XML file does not appear to have any style information associated with it. The document tree is shown below.
    
    <inputs>
    <orario1>18:53:19</orario1>
    <agg_automatico1>1</agg_automatico1>
    <cntd_agg_automatico1>52</cntd_agg_automatico1>
    <termostato1>ON</termostato1>
    <caldo1></caldo1>
    <temp_sala1>20.94</temp_sala1>
    <temp_sala_imp1>21.00</temp_sala_imp1>
    <termosifone_sala1>ON</termosifone_sala1>
    <sala_h1>18</sala_h1>
    <sala_m1>54</sala_m1>
    <sala_s1>59</sala_s1>
    <sala_time_temp01>23:00</sala_time_temp01>
    <sala_temp_time01>17.00</sala_temp_time01>
    <sala_time_temp11>07:30</sala_time_temp11>
    
    
    
    
    ...............
    Cosa sbaglio ?

  4. #4
    Quote Originariamente inviata da inventor4fun Visualizza il messaggio
    Grazie mille,
    anche se sembra semplice non riesco.
    Codice PHP:
    $url 'http://.........com:801/?aggiorna_XML'
    $xml simpleXML_load_file($url,"SimpleXMLElement",LIBXML_NOCDATA); 
    if(
    $xml ===  FALSE) { 
     } else { } 
    mi resituisce questo errore

    codice:
    Warning: simplexml_load_file(http://......com:801/?aggiorna_XML): failed to open stream: Connection timed out in /web/htdocs/............................php on line 40 Warning: simplexml_load_file(): I/O warning : failed to load external entity "http://................................com:801/?aggiorna_XML" in /web/htdocs/........................................php on line 40
    però se metto l'indirizzo del mio file xml sembra funzionare perché ottengo questo:
    codice:
    This XML file does not appear to have any style information associated with it. The document tree is shown below.
    
    <inputs>
    <orario1>18:53:19</orario1>
    <agg_automatico1>1</agg_automatico1>
    <cntd_agg_automatico1>52</cntd_agg_automatico1>
    <termostato1>ON</termostato1>
    <caldo1></caldo1>
    <temp_sala1>20.94</temp_sala1>
    <temp_sala_imp1>21.00</temp_sala_imp1>
    <termosifone_sala1>ON</termosifone_sala1>
    <sala_h1>18</sala_h1>
    <sala_m1>54</sala_m1>
    <sala_s1>59</sala_s1>
    <sala_time_temp01>23:00</sala_time_temp01>
    <sala_temp_time01>17.00</sala_temp_time01>
    <sala_time_temp11>07:30</sala_time_temp11>
    
    
    
    
    ...............
    Cosa sbaglio ?
    Credo tu debba abilitare allow_url_fopen nel tuo file php.ini, se non puoi modificare le impostazioni dovrai usare la funzione curl.

  5. #5
    Quote Originariamente inviata da lucavizzi Visualizza il messaggio
    Credo tu debba abilitare allow_url_fopen nel tuo file php.ini, se non puoi modificare le impostazioni dovrai usare la funzione curl.
    Ho controllato ed è su on,

    Forse è come imposto la pagina XML

  6. #6
    Quote Originariamente inviata da inventor4fun Visualizza il messaggio
    Ho controllato ed è su on,

    Forse è come imposto la pagina XML
    Il "failed to open stream" significa che non riesce affatto ad accedere al file, prova ad applicare urlencode() al path
    codice:
    $url = 'http://.........com:801/?aggiorna_XML'; 
    $xml=simplexml_load_file(urlencode($url));

  7. #7
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Prova a fare un file_get_contents sull'url e vedi se recuperi l'xml

  8. #8
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    765
    eXvision

  9. #9
    Ho trovato questa soluzione che funziona:
    function GetXmlData(){
    nocache = "&nocache=" + Math.random() * 1000000;
    var request = new XMLHttpRequest();
    request.onreadystatechange = function(){
    if (this.readyState == 4) {
    if (this.status == 200) {
    if (this.responseXML != null) {
    document.getElementById("orario").innerHTML= this.responseXML.getElementsByTagName('orario1')[0].childNodes[0].nodeValue;
    document.getElementById("cntd_agg_automatico").inn erHTML= this.responseXML.getElementsByTagName('cntd_agg_au tomatico1')[0].childNodes[0].nodeValue;
    document.getElementById("termostato").src= this.responseXML.getElementsByTagName('termostato1 ')[0].childNodes[0].nodeValue;
    .............................

    }
    }
    }
    }
    // send HTTP GET request with LEDs to switch on/off if any
    request.open("GET", "http://................................:801/?aggiorna_WEB", true);
    request.send(null);
    setTimeout('GetXmlData()', 1000);
    }

  10. #10
    Quote Originariamente inviata da inventor4fun Visualizza il messaggio
    Ho trovato questa soluzione che funziona:
    È una chiamata Ajax, in pratica stai eseguendo la richiesta dal client invece che dal server.

Tag per questa discussione

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.