2

我正在使用具有 REST API 的 ZF 开发应用程序。一切都很顺利,只是我的 XML 开头有一个空白字符,因此 XML 违反了开头有 XML 声明的规则。我正在尝试使用 javascript/jquery 来使用它,但在 firebug 的控制台上出现以下错误:

XML 解析错误:XML 或文本声明不在实体的开头

在 SO 和网络上的其他地方有许多帖子讨论了这一点。这是由于输出缓冲,我已经尝试使用 ob_flush 和 flush 如其他地方所建议的那样,但我只是不知道如何去做,因为这些帖子没有提到这些应该去哪里。也许我不正确理解输出缓冲但是谁能告诉我我需要在哪里放置这些调用来删除这个空白字符?

我真的很感谢您的回复,因为我现在已经花了好几个小时来解决这个问题(我花了很长时间才弄清楚这首先是问题所在)而且我对此很生气!哈哈!

谢谢

4

2 回答 2

3

您可能已经保存了编码为 UTF-8 并带有字节顺序标记(BOM) 的 PHP 文件。尝试在没有BOM的情况下保存编码为 UTF-8 的 PHP 文件。高级文本编辑器,例如 Windows 上的 Notepad++,或 Mac OS 上的 TextWrangler,或大多数其他高级文本编辑器都具有这样的功能。

另一种可能性是您<?php在 PHP 文件中的 any 之前有无意的空白字符,例如在这个单个 PHP 文件的示例中:

 <-- here for instance
<?php
  /*
    some code to generate $yourXml;
  */
?>
 <-- or here
<?php
  echo $yourXml;
?>

...或您的 PHP 代码输出的其他无意的空白字符。

如果你已经解决了这些问题,那么就不需要输出缓冲了。使用输出缓冲来规避这些类型的问题是一种草率的编码习惯。

编辑
它也不会解决问题,想想吧。

于 2011-07-26T16:35:58.137 回答
0
echo trim($yourXml); 

你可以简单地这样做:)

于 2011-07-27T08:25:02.643 回答