【发布时间】:2014-05-23 19:20:47
【问题描述】:
如何从 URL XML 数据创建 XML 阅读器?
我从一个 URL 向PHPExcel 工厂的identify() 提供了有效的 XML 数据,但是脚本触发了一个错误:
( ! ) 致命错误:未捕获的异常 'PHPExcel_Reader_Exception' 与 消息'在 C:\wamp\www\project\Classes\PHPExcel\Reader\Excel2007.php 在第 82 行
( ! ) PHPExcel_Reader_Exception: 无法打开 阅读!文件不存在。在 C:\wamp\www\project\Classes\PHPExcel\Reader\Excel2007.php 在第 82 行
$url = "http://www.w3schools.com/xml/note.xml";
$xml = simplexml_load_file($url); //OR $xml = simplexml_load_string(file_get_contents($url));
$inputFileType = PHPExcel_IOFactory::identify($xml); // ERROR
更新:
$dom = new DOMDocument();
$dom->load($url);
$fileName = 'filename.xml';
$xml = $dom->save($fileName);
$inputFileType = PHPExcel_IOFactory::identify($xml);
( ! )致命错误:未捕获的异常 'PHPExcel_Reader_Exception' 与 消息'无法打开 116752 进行阅读!文件不存在。'在 C:\wamp\www\project\Classes\PHPExcel\Reader\Excel2007.php 在第 82 行
(!) PHPExcel_Reader_Exception: 无法打开 116752 进行阅读!文件 不存在。
【问题讨论】:
-
关于您的编辑:您将文件保存到 $fileName 但传递 PHPExcel 一个不同的变量。您实际上根本不需要解析 XML 文件,只需下载它,以便您有一个文件名来提供 PHPExcel。
-
我不知道您希望 PHPExcel 对该文件做什么。期望它能够读取任何 XML 文件并将其转换为有用的电子表格,这有点像期望有人用英语对任何可能的问题给出有用的答案。
-
我想我明白了。我将文件而不是文件名传递给
identify()的文件本身。我现在尝试将其保存为 Excel。我想要做的基本上是从 URL 中获取 XML,将其保存为服务器上的 XML 文件(因为 PHPExcel 似乎无法从 URL 读取数据,然后打开本地保存的 XML 并将其保存为 Excel)。似乎有点不必要的复杂,但我认为这是因为 PHPExcel 的不足(我不确定,也许有一种方法可以将 XML 从 URL 直接读取到identify) -
您不需要 SimpleXML 或 DOM 来下载文件,例如:您可以使用 file_get_contents() 和 file_put_contents()。那时它是 XML 并没有什么特别之处。