Visualizzazione risultati 1 fino 5 di 5

Discussione: Includere XML in File PHP

  1. #1
    Guest

    Post Includere XML in File PHP

    Ciao, sto usando questo script funzionante per estrarre il testo da un tag xml:

    Codice PHP:
    <?php

    $xml
    = '
    <tracks>
    <radioname>Ixtreme Radio</radioname>
    <rank>0</rank>
    <isradionomy>1</isradionomy>
    <radurl>http://www.radionomy.com/ixtremeradio</radurl>
    <track>
    <uniqueid>4014324288</uniqueid>
    <title>Mask Off</title>
    <artists>Future</artists>
    <starttime>2017-06-28 23:25:02.303</starttime>
    <playduration>201803</playduration>
    <current>1</current>
    <cover>
    http://i3.radionomy.com/tracks/232/04aebbff-c2d9-4d47-a570-44b5f55edd3d?radiouid=80b5e81c-c769-478a-aee7-fbe149aacfe3
    </cover>
    <callmeback>62922</callmeback>
    </track>
    </tracks>'
    ;

    $xmlcont = new SimpleXMLElement($xml);

    echo
    "Canzone in onda:" . $xmlcont->track->title . " di " . $xmlcont->track->artists;


    ?>
    Lo script restituisce correttamente:
    Canzone in onda:Mask Off di Future

    Purtroppo però a me serve che invece di leggere il file xml dalla variabile $xml
    lo legga da questo link: http://api.radionomy.com/currentsong...evious=yes.xml

    Ho provato:

    Codice PHP:
    <?php

    $xml
    = simplexml_load_file("http://api.radionomy.com/currentsong.cfm?radiouid=80b5e81c-c769-478a-aee7-fbe149aacfe3&apikey=cf415862-c0ac-4085-bc03-be80a26f9063&callmeback=yes&type=xml&cover=yes&previous=yes.xml");
    $xmlcont = new SimpleXMLElement($xml);

    echo
    "Canzone in onda:" . $xmlcont->track->title . " di " . $xmlcont->track->artists;


    ?>
    Ma restituisce questo errore:
    Codice:
    Warning: SimpleXMLElement::__construct(): Entity: line 9: parser error : Start tag expected, '<' not found in C:\xampp2\htdocs\2017\call_api.php on line 4
    
    Warning: SimpleXMLElement::__construct(): in C:\xampp2\htdocs\2017\call_api.php on line 4
    
    Warning: SimpleXMLElement::__construct(): ^ in C:\xampp2\htdocs\2017\call_api.php on line 4
    
    Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in C:\xampp2\htdocs\2017\call_api.php:4 Stack trace: #0 C:\xampp2\htdocs\2017\call_api.php(4): SimpleXMLElement->__construct('\n \t\n ...') #1 {main} thrown in C:\xampp2\htdocs\2017\call_api.php on line 4
    Ultima modifica di knightrider3000 : 05-07-2017 alle ore 07.27.02

  2. #2
    Guest

    Predefinito

    Ho risolto in locale con questo codice:
    Codice PHP:
    $xmlObj = new SimpleXMLElement('http://api.radionomy.com/currentsong.cfm?radiouid=80b5e81c-c769-478a-aee7-fbe149aacfe3&apikey=cf415862-c0ac-4085-bc03-be80a26f9063&callmeback=yes&type=xml&cover=yes&previous=yes.xml', NULL, TRUE);
    $tracks = $xmlObj->xpath("//tracks");
    if(
    count($tracks) > 0) {
    foreach(
    $tracks as $track) {
    echo
    $track->track->title . "\n";
    }
    }
    Purtroppo su Altervista non parte da errori! :(

  3. #3
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    La funzione "simplexml_load_file();" restuisce un oggetto è non una stringa ...tu stai passando l'oggetto a "SimpleXMLElement" ovviamente genera errori. Adesso spieghiamo il concetto di visualizzazione in PHP se non specificato diversamente per via della funzione "header" restituisce un content-type test/html (cioè una pagina html è una pagina html a tutti i suoi tag altrimenti è un brodo lle non internet ).
    Codice PHP:
    <?php
    $xml
    =simplexml_load_file("http://api.radionomy.com/currentsong.cfm?radiouid=80b5e81c-c769-478a-aee7-fbe149aacfe3&apikey=cf415862-c0ac-4085-bc03-be80a26f9063&callmeback=yes&type=xml&cover=yes&previous=yes") or die("Error: Cannot create object");
    echo
    $xml->track->title . "<br>";
    echo
    $xml->track->artists . "<br>";
    ?>
    Nota bene che il file HTML è sprovvisto di tutti i tag che lo caratterizzano.
    PS. In alcuni server la richiesta GET (anche una URL) si limita a 256 bytes.

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    La funzione "simplexml_load_file();" restuisce un oggetto è non una stringa ...tu stai passando l'oggetto a "SimpleXMLElement" ovviamente genera errori. Adesso spieghiamo il concetto di visualizzazione in PHP se non specificato diversamente per via della funzione "header" restituisce un content-type test/html (cioè una pagina html è una pagina html a tutti i suoi tag altrimenti è un brodo lle non internet ).
    Codice PHP:
    <?php
    $xml
    =simplexml_load_file("http://api.radionomy.com/currentsong.cfm?radiouid=80b5e81c-c769-478a-aee7-fbe149aacfe3&apikey=cf415862-c0ac-4085-bc03-be80a26f9063&callmeback=yes&type=xml&cover=yes&previous=yes") or die("Error: Cannot create object");
    echo
    $xml->track->title . "<br>";
    echo
    $xml->track->artists . "<br>";
    ?>
    Nota bene che il file HTML è sprovvisto di tutti i tag che lo caratterizzano.
    PS. In alcuni server la richiesta GET (anche una URL) si limita a 256 bytes.
    Si infatti in locale con XAMPP ho appena risolto in questa maniera
    Codice PHP:
    <?php
    $xmlObj
    = new SimpleXMLElement('http://api.radionomy.com/currentsong.cfm?radiouid=80b5e81c-c769-478a-aee7-fbe149aacfe3&apikey=cf415862-c0ac-4085-bc03-be80a26f9063&callmeback=yes&type=xml&cover=yes&previous=yes.xml', NULL, TRUE);
    $tracks = $xmlObj->xpath("//tracks");
    if(
    count($tracks) > 0) {
    foreach(
    $tracks as $track) {
    echo
    $track->track->title . "\n";
    }
    }

    ?>
    Però qui su Altervista non parte, sarà forse per colpa di questo http://it.help.altervista.org/w/Conn...rver-to-server ?
    grazie

  5. #5
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Il codice che ti avevo proposto è solo il copia incolla del tuo primo tentativo della funzione load e funziona qui su altervista http://forum.it.altervista.org/php-m...ml#post1351133 . "Ho aggiunto track".. Non saprei se dipende dalle connessione server to server ma potrebbe... Puoi controllare nelle impostazioni PHP dal pannello di controllo.. (Per connettersi in remoto " più volgarmente internet" devi abilitare tale connessione previo inviò di un sms e scegliere senza restrizioni).
    Ultima modifica di darbula : 05-07-2017 alle ore 14.33.05

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •