外部XML文件未在php中加载。 HTTP禁止403

时间:2016-06-02 20:41:51

标签: php xml xml-parsing

我有这个xml资源,我想在php中解析它。

http://example.gov

我的PHP代码:

<?php
$userinput='http://example.gov/MapClick.php?lat=41.98&lon=-87.9&FcstType=digitalDWML';

$xml = simplexml_load_file($userinput);
echo $xml;
?>

我收到的错误:

  

警告:simplexml_load_file(http://forecast.weather.gov/MapClick.php?lat=41.98&lon=-87.9&FcstType=digitalDWML):无法打开流:HTTP请求失败!第4行的C:\ xampp \ htdocs \ xmlParser.php中禁止HTTP / 1.0 403

     

警告:simplexml_load_file():I / O警告:无法在第4行的C:\ xampp \ htdocs \ xmlParser.php中加载外部实体“http://forecast.weather.gov/MapClick.php?lat=41.98&lon=-87.9&FcstType=digitalDWML

只是要添加,xml资源在不同的服务器上

1 个答案:

答案 0 :(得分:1)

服务器似乎是基于用户代理阻止请求。您可以使用cURL或file_get_contents()并指定用户代理,然后使用simplexml_load_string()来提取您选择的结果。

<?php
    $context  = stream_context_create(array('http' => array('header' => 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36')));

    $url = "http://forecast.weather.gov/MapClick.php?lat=41.98&lon=-87.9&FcstType=digitalDWML";

    $xml = file_get_contents($url, false, $context);
    $xmlObject = simplexml_load_string($xml);
    print_r($xmlObject);
?>