Simplexml_load_file():I/O 警告:未能加载外部实体“”
Posted
技术标签:
【中文标题】Simplexml_load_file():I/O 警告:未能加载外部实体“”【英文标题】:Simplexml_load_file(): I/O warning : failed to load external entity " " 【发布时间】:2017-10-20 08:33:01 【问题描述】:在问这个问题之前,我尝试了一些从 URL 加载数据 xml 的方法,但都失败了。同样在 XML url 中有一些特殊字符。这是错误
Warning: simplexml_load_file(): I/O warning : failed to load external entity " " in D://....;
这是我的代码:
$url = 'http://website.com?xml¶m1=1¶m2=2';
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url); // get the url contents
$data = curl_exec($ch); // execute curl request
curl_close($ch);
$xml = simplexml_load_string($data);
$json = json_encode($xml);
echo $json;
感谢大家的帮助
【问题讨论】:
【参考方案1】:您可以使用更简单的方式加载 URL
$context = stream_context_create(array('http' => array('header' => 'Accept: application/xml')));
$url = 'http://website.com?xml¶m1=1¶m2=2';
$xml = file_get_contents($url, false, $context);
$xml = simplexml_load_string($xml);
print_r($xml);
编辑: 各个地方都有一些关于错误 403 的讨论,一个建议是在此调用之前设置用户代理:
ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0)');
(取自file_get_contents() give me 403 Forbidden)
【讨论】:
谢谢你,我想,我的 XML url 有特殊字符的问题。当我使用curl
获取数据和var_dump($data)
时,我看到里面有字符“”。我不知道原因,因为我可以正常从另一个 xml url 获取数据。
感谢@Nigel Ren。我用了跟随它并得到结果:Warning: file_get_contents(http://website.com/entries.xml?key=0231cf3b3ef031e070b4e30fea881a0c63dd38f2&project_id=192&issue_id=8136&from=2017-05-01&to=2017-05-20&oe=utf-8): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in D:\website\index.php on line 9
。出现 403 禁止错误,因为我不是管理员的这台服务器,因为我可以为它设置权限
ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0)');
:仍然无法正常工作并且仍然是相同的消息旧错误;
该代码适用于您的原始 URL,但这个新 URL 不适用,如果这对您来说是相同的,那么它与对该资源的访问有关。您是否在浏览器中尝试过,看看它会给您带来什么。
感谢@Nigel Ren。我试试以上是关于Simplexml_load_file():I/O 警告:未能加载外部实体“”的主要内容,如果未能解决你的问题,请参考以下文章
想要使用 cURL 而不是 SimpleXML_load_file()
当我尝试做 simplexml_load_file 时出现 XML 错误