我试图构建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可以解决此问题。如果保存方法错误,则可能存在一些特殊的字节。