how to read xml file from url using php

后端 未结 5 1054
广开言路
广开言路 2020-12-03 07:02

I have to read an XML file from an URL

$map_url = \"http://maps.google.com/maps/api/directions/xml?origin=\".$merchant_address_url.\"&destination=\".$cus         


        
相关标签:
5条回答
  • 2020-12-03 07:16

    file_get_contents() usually has permission issues. To avoid them, use:

    function get_xml_from_url($url){
        $ch = curl_init();
    
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
    
        $xmlstr = curl_exec($ch);
        curl_close($ch);
    
        return $xmlstr;
    }
    

    Example:

    $xmlstr = get_xml_from_url('http://www.camara.gov.br/SitCamaraWS/Deputados.asmx/ObterDeputados');
    $xmlobj = new SimpleXMLElement($xmlstr);
    $xmlobj = (array)$xmlobj;//optional
    
    0 讨论(0)
  • 2020-12-03 07:17

    Your code seems right, check if you have fopen wrappers enabled (allow_url_fopen = On on php.ini)

    Also, as mentioned by other answers, you should provide a properly encoded URI or encode it using urlencode() function. You should also check if there is any error fetching the XML string and if there is any parsing error, which you can output using libxml_get_errors() as follows:

    <?php
    if (($response_xml_data = file_get_contents($map_url))===false){
        echo "Error fetching XML\n";
    } else {
       libxml_use_internal_errors(true);
       $data = simplexml_load_string($response_xml_data);
       if (!$data) {
           echo "Error loading XML\n";
           foreach(libxml_get_errors() as $error) {
               echo "\t", $error->message;
           }
       } else {
          print_r($data);
       }
    }
    ?>
    

    If the problem is you can't fetch the XML code maybe it's because you need to include some custom headers in your request, check how to use stream_context_create() to create a custom stream context for use when calling file_get_contents() on example 4 at http://php.net/manual/en/function.file-get-contents.php

    0 讨论(0)
  • 2020-12-03 07:25

    $url = 'http://www.example.com'; $xml = simpleXML_load_file($url,"SimpleXMLElement",LIBXML_NOCDATA);

    $url can be php file, as long as the file generate xml format data as output.

    0 讨论(0)
  • 2020-12-03 07:33

    you can get the data from the XML by using "simplexml_load_file" Function. Please refer this link

    http://php.net/manual/en/function.simplexml-load-file.php

    $url = "http://maps.google.com/maps/api/directions/xml?origin=Quentin+Road+Brooklyn%2C+New+York%2C+11234+United+States&destination=550+Madison+Avenue+New+York%2C+New+York%2C+10001+United+States&sensor=false";
    $xml = simplexml_load_file($url);
    print_r($xml);
    
    0 讨论(0)
  • 2020-12-03 07:34

    It is working for me. I think you probably need to use urlencode() on each of the components of $map_url.

    0 讨论(0)
提交回复
热议问题