当我尝试做 simplexml_load_file 时出现 XML 错误

Posted

技术标签:

【中文标题】当我尝试做 simplexml_load_file 时出现 XML 错误【英文标题】:XML Error when I try to do simplexml_load_file 【发布时间】:2015-11-04 13:21:27 【问题描述】:

我正在尝试将来自另一个网站的 XML 数据转换为我的程序中的数组。这是我到目前为止所写的:

<?php
$rss = 'http://headlines.yahoo.co.jp/rss/asahik-dom.xml';
$xml = simplexml_load_file($rss);
var_dump($xml);
?>

但是,当我尝试加载 php 页面时,会出现以下错误:

警告:simplexml_load_file(http://headlines.yahoo.co.jp/rss/asahik-dom.xml) [function.simplexml-load-file]:打开流失败:HTTP 请求失败!在 /home/www2/it32.lady2.itall.co.jp/www/yxml.php 第 11 行

警告:simplexml_load_file() [function.simplexml-load-file]:I/O 警告:无法在 /home/www2/it32.lady2.itall.co.jp/www 中加载外部实体“http://headlines.yahoo.co.jp/rss/asahik-dom.xml” /yxml.php 在第 11 行 布尔(假)

仅供参考 $xml = simplexml_load_file($rss);是第 11 行。

我的代码的哪一部分出错了? 请帮忙。

【问题讨论】:

【参考方案1】:

请尝试file_get_contents()加载文件,然后使用SimpleXMLElement解析。

试试

$rss = file_get_contents('http://headlines.yahoo.co.jp/rss/asahik-dom.xml');
$xml = new SimpleXMLElement($rss);
print_r($xml);

注意allow_url_fopen必须在php.ini中启用

【讨论】:

这就是结果:Warning: file_get_contents(http://headlines.yahoo.co.jp/rss/asahik-dom.xml) [function.file-get-contents]: failed to open stream: HTTP request failed! in /home/www2/it32.lady2.itall.co.jp/www/yxml.php on line 10 Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /home/www2/it32.lady2.itall.co.jp/www/yxml.php:11 Stack trace: #0 /home/www2/it32.lady2.itall.co.jp/www/yxml.php(11): SimpleXMLElement-&gt;__construct('') #1 main thrown in /home/www2/it32.lady2.itall.co.jp/www/yxml.php on line 11 @MasayukiTonoki 似乎在您的php.ini 中未启用allow_url_fopen

以上是关于当我尝试做 simplexml_load_file 时出现 XML 错误的主要内容,如果未能解决你的问题,请参考以下文章

Simplexml_load_file():I/O 警告:未能加载外部实体“”

RSS不会在PHP中解析(尝试过file_get_contents,curl和simplexml_load_file)[重复]

想要使用 cURL 而不是 SimpleXML_load_file()

simplexml_load_file 抑制警告的直接输出

调用未定义的函数 simplexml_load_file()

XML - simplexml_load_file - foreach