在第6列的第1行上的错误:XML声明仅在文档开始时允许



我试图构建XML文件。但是遇到了错误。我包括代码和错误。预先感谢。

    <?php 
    mysql_connect("localhost", "root", "") or die(mysql_error()); 
    mysql_select_db("comrade") or die(mysql_error()); 
    $data = mysql_query("SELECT * FROM support WHERE DATE(`date`) = CURDATE()") 
    or die(mysql_error());
    $xml = new SimpleXMLElement('<xml/>');
    while($info = mysql_fetch_array( $data )) 
     { 
      $support = $xml->addChild('support');
      $support->addChild('cus_name',$info['com_name']);
      $support->addChild('ser_type',$info['ser_type']);
     } 
     Header('Content-type: text/xml');
     print($xml->asXML());
     ?>

它显示以下错误

     Below is a rendering of the page up to the first error.

简而言之,您应该做:

ob_clean(); //Clean (erase) the output buffer
print($xml->asXML());

解释:如果包含的任何文件打印了一条新行,您将获得

第2列第2行上的错误:XML声明仅在开始时允许 文档

可能是因为在某些文件中 <?php标签在空行之后启动。

因此,只需清洁输出缓冲区,而不是搜索引起错误的文件。

您的问题是Header('Content-type: text/xml');

的放置

尝试此操作并确保没有什么header()调用之前:

<?php 
header('Content-type: text/xml');
mysql_connect("localhost", "root", "") or die(mysql_error()); 
mysql_select_db("comrade") or die(mysql_error()); 
$data = mysql_query("SELECT * FROM support WHERE DATE(`date`) = CURDATE()") 
or die(mysql_error());
$xml = new SimpleXMLElement('<xml/>');
while($info = mysql_fetch_array( $data )) 
{ 
    $support = $xml->addChild('support');
    $support->addChild('cus_name',$info['com_name']);
    $support->addChild('ser_type',$info['ser_type']);
} 
print($xml->asXML());
?>

有时用/没有bom保存UTF-8可以解决此问题。如果保存方法错误,则可能存在一些特殊的字节。

最新更新