【问题标题】:SimpleXML fails when called twice in same execution在同一执行中调用两次 SimpleXML 失败
【发布时间】:2012-03-03 05:11:08
【问题描述】:

我正在尝试为移动应用程序编写 API。我想以 XML 格式返回数据。我正在使用为 Wolfram Alpha 构建的 PHP 库来查询他们的数据,并希望我的 API 充当移动应用程序和 Wolfram Alpha 之间的过渡。每当我在使用 Wolfram Alpha PHP 库后尝试打印 XML 文档时,都会收到来自 Chrome 的错误提示:

error on line 7 at column 6: XML declaration allowed only at the start of the document

我在 IE 中一无所获,而在 Firefox 中我得到:

XML Parsing Error: XML or text declaration not at start of entity
Location: http://myfitnessplate.com/api/food-search/name/thisissomethingnotfood/key/HWGCF-YASLT-HOSEC-OZWJH-HETKJ
Line Number 7, Column 1:
<?xml version="1.0"?>
^

没有其他数据。我打开 Wolfram Alpha PHP 库 (WolframAlphaEngine.php) 的主文件,注意到它使用 SimpleXML 在以下代码中查询 Wolfram Alpha

$xml = simplexml_load_file( $url );

每当我使用该库时,都会收到 XML 错误。如果我不使用该库,XML 输出就好了。 “simplexml_load_file”是否有可能由于某种原因导致我的 XML 中断?

我的代码在使用使用 simplexml_load_file 的库时不起作用(这在不使用库时起作用):

$xml = new SimpleXMLElement('<xml/>');
header("Content-Type:text/xml");
echo $xml->asXML();

【问题讨论】:

  • 什么是“第 7 行第 6 列”?你能提供更多的代码上下文吗?
  • 我不知道,因为我看不到 XML。它说下面是 xml 的呈现直到第一个错误,但那里什么都没有。这只是一个白屏。还有什么可以帮到你的吗?
  • 从你的意思来看,这个错误听起来像是来自你用来查看xml的浏览器?您的脚本的原始输出是什么?
  • 看起来是这样。我最初是在chrome中查看它,尝试了IE,我什么也没得到。只是一个空白页。除了 XML 没有输出,所以现在出现错误,什么都没有。
  • 用来自 ie 和 firefox 的信息更新了我的问题。

标签: php simplexml


【解决方案1】:

我强烈怀疑在您回显 XML 之前某处有七行输出。您需要将此输出静音,因为它会导致您的 xml 变得无效,从而导致您的浏览器发疯。

可能是您包含的库中的错误消息。您的 php 文件中可能有前导或尾随空格。唯一知道的方法是在浏览器开始解析之前查看原始输出。

【讨论】:

  • 如果我在设置 XML 标头之前死掉,在打印 XML 之前,页面源是七行空白。这就是原因,对吗?
  • 果然在所有7个文件的php结束标签后面都有一个空行。谢谢!
猜你喜欢
  • 2014-02-10
  • 2023-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-05
相关资源
最近更新 更多