SimpleXML在同一执行中调用两次时失败


SimpleXML fails when called twice in same execution

我正在尝试为移动应用程序编写一个API。我想以XML形式返回数据。我使用为WolframAlpha构建的PHP库来查询他们的数据,并希望我的API作为移动应用程序和WolframAlpha的中间人。每当我在使用WolframAlpha 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"?>
^

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

$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();

我强烈怀疑在您回显XML之前,某个地方有七行输出。您需要使此输出静音,因为它会导致xml无效,从而导致浏览器疯狂。

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