我在加载外部XML文件时遇到问题。
当我在浏览器中打开它时,一切看起来都很好。我尝试下载XML文件并将其上传到我自己的服务器上。当我尝试从我的服务器加载XML文件时,一切都运行良好。
有人可以帮我解决这个问题,以便我可以从外部服务器加载它吗?
我的代码:
$oXML_cz = new SimpleXMLElement(file_get_contents('http://www.ticketportal.cz/xml/temp/partnerall1.xml?ID_partner=122'));
foreach ($oXML_cz->event as $event_cz)
{
......
}
答案 0 :(得分:1)
解决方案是尝试CURL:
function download_page($path){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$path);
curl_setopt($ch, CURLOPT_FAILONERROR,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$retValue = curl_exec($ch);
curl_close($ch);
return $retValue;
}
$sXML = download_page('http://www.domain.com/file.xml');
$oXML_cz = new SimpleXMLElement($sXML);
foreach($oXML_cz->event as $event_cz)
{
...
}
感谢您的回答;)
答案 1 :(得分:0)
检查allow_url_fopen
的配置。可以在this question中找到更多提示。
答案 2 :(得分:0)
这个库的错误没有太多记录。问题可能是由于XML文件过大而不是xml结构合规性/完整性。
例如,一旦解析,15MB文件可能会推断1GB,因此ini_set('memory_limit', '1024M');
可能无效。
在上面的情况中,我通过在xml声明/加载期间包含LIBXML_PARSEHUGE
参数来解决问题。
$xml = new SimpleXMLElement($contents, LIBXML_PARSEHUGE);