pasquy73
pasquy73

Reputation: 629

Error with simplexml_load_file via HTTP

I'm using simplexml_load_file in php to retrieve an XML contents via HTTP.

Here my code:

if ($xml = simplexml_load_file($url)) {
   $item_list = $xml->xpath("/probabile_formazione/titolari/calciatore");
   foreach ($item_list as $item) {
       echo $item . ' ';
   }
}

if I use the $url = "http://www.gazzetta.it/ssi/2011/boxes/calcio/squadre/cagliari/formazione/formazione.xml"; it works but if I use the $url = "http://www.gazzetta.it/ssi/2011/boxes/calcio/squadre/atalanta/formazione/formazione.xml"; I've got this error:

[Thu Sep 04 16:37:01 2014] [error] [client 127.0.0.1] PHP Warning: simplexml_load_file(): http://www.gazzetta.it/ssi/2011/boxes/calcio/squadre/atalanta/formazione/formazione.xml:1: parser error : Start tag expected, '<' not found in /var/www/fanta/prova1.php on line 42 [Thu Sep 04 16:37:01 2014] [error] [client 127.0.0.1] PHP Warning: simplexml_load_file(): \x1f\x8b\b in /var/www/fanta/prova1.php on line 42 [Thu Sep 04 16:37:01 2014] [error] [client 127.0.0.1] PHP Warning: simplexml_load_file(): ^ in /var/www/fanta/prova1.php on line 42

Could you help me? Thanks pasquy73

Upvotes: 0

Views: 122

Answers (1)

Paul Giragossian
Paul Giragossian

Reputation: 375

I think the response xml was malformed. You should handle possible errors of getting correct xml such as :

<?
    $url = "http://www.gazzetta.it/ssi/2011/boxes/calcio/squadre/atalanta/formazione/formazione.xml";

    libxml_use_internal_errors(true);

    if ($xml = simplexml_load_file($url)) {
       $item_list = $xml->xpath("/probabile_formazione/titolari/calciatore");
       foreach ($item_list as $item) {
           echo $item . ' ';
       }
    }
    else {

        foreach (libxml_get_errors() as $error) {
            print_r($error);
        }

        libxml_clear_errors();
    }

?>

Upvotes: 1

Related Questions