PHP "XML Parsing Error: XML or text declaration not at start of entity"

PHP "XML Parsing Error: XML or text declaration not at start of entity"

我的 API 处理器 returns 数据采用请求中“type”关键字指定的几种格式之一。例如,我能够调用 JSON header 使用以下方法,但这不适用于 XML。有没有一种方法可以在不产生错误的情况下调用它?

<?PHP
if($_REQUEST['type'] == "XML")
{
header ("Content-Type:text/xml");
}

header指定中没有白色space。 稍后,我使用 PHP 的 dom class 来制定 XML。 这看起来像这样

$dom = new DOMDocument("1.0", 'utf-8');
$root = $dom->createElement("Data");
$dom->appendChild($root);
if(!empty($Error))
{
    $Er = $dom->createElement("Errors");
    $root->appendChild($Er);
    foreach($Error as $value)
    {
        $key = "Error";
        $Child = $dom->createElement($key);
        $Child = $Er->appendChild($Child);
        $data = $dom->createTextNode($value);
        $data = $Child->appendChild($data);
    }
}
else
{
    foreach($XMLItems as $key => $value)
    {
        $key = $dom->createElement($key);
        $root->appendChild($key);
        $variable = $dom->createTextNode($value);
        $key->appendChild($variable);
    }
}
$dom->preserveWhiteSpace = FALSE;
$dom->formatOutput = TRUE;
echo $dom->saveXML();

解决方案: 为了解决这里的问题,我按照 aynber 的建议所做的是消除 PHP 中的所有空行以及任何包含。我消除了结束 PHP 标记和这些包含以及主文件中的额外行。这消除了文件顶部的两个空行,允许我插入 XML header。是否有必要删除结束标记可能值得怀疑,但它们不需要存在。

"XML Parsing Error: XML or text declaration not at start of entity" 意味着在您的 XML 输出开始的某处,有一个 space 或其他不应存在的字符。有几个地方需要检查:

  • 每个 PHP 文件的开头。确保在 <?php
  • 之前没有 space、新行或不可见字符
  • 您突破并返回 PHP 街区的任何地方。那里的任何东西都会被发送到浏览器,即使它是白色的 space.