我必须从URL
读取XML文件$map_url = "http://maps.google.com/maps/api/directions/xml?origin=".$merchant_address_url."&destination=".$customer_address_url."&sensor=false";
这给了我一个像:
的网址我正在使用此函数来读取然后获取数据:
$response_xml_data = file_get_contents($map_url);
if($response_xml_data){
echo "read";
}
$data = simplexml_load_string($response_xml_data);
echo "<pre>"; print_r($data); exit;
但没有运气,有什么帮助吗?
答案 0 :(得分:19)
您可以使用“simplexml_load_file”函数从XML获取数据。请参阅此链接
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);
答案 1 :(得分:14)
您的代码似乎正确,请检查您是否启用了fopen wrappers(php.ini上为allow_url_fopen = On
)
此外,正如其他答案所述,您应该提供正确编码的URI或使用urlencode()函数对其进行编码。您还应检查是否有任何错误提取XML字符串以及是否存在任何解析错误,您可以使用libxml_get_errors()输出,如下所示:
<?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);
}
}
?>
如果问题是您无法获取XML代码,可能是因为您需要在请求中包含一些自定义标头,请检查如何使用stream_context_create()创建自定义流上下文,以便在调用时使用{{ 1}}在示例4的http://php.net/manual/en/function.file-get-contents.php
答案 2 :(得分:4)
file_get_contents通常有权限问题。要避免它们,请使用:
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;
}
示例:
$xmlstr = get_xml_from_url('http://www.camara.gov.br/SitCamaraWS/Deputados.asmx/ObterDeputados');
$xmlobj = new SimpleXMLElement($xmlstr);
$xmlobj = (array)$xmlobj;//optional
答案 3 :(得分:1)
这对我有用。我想您可能需要在urlencode()
的每个组件上使用$map_url
。
答案 4 :(得分:1)
$url = 'http://www.example.com';
$xml = simpleXML_load_file($url,"SimpleXMLElement",LIBXML_NOCDATA);
$ url可以是php文件,只要该文件生成xml格式数据作为输出。