当我尝试做 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->__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()