我正在尝试构建一个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.
答案 0 :(得分:11)
简而言之,你应该这样做:
ob_clean(); //Clean (erase) the output buffer
print($xml->asXML());
解释:如果任何包含的文件打印新行,您将获得
第6行第2行的错误:仅在开始时允许XML声明 文件
可能是因为在某个文件中<?php
标记在空行后开始。
所以不要搜索导致错误的文件,只需清理输出缓冲区即可。
答案 1 :(得分:4)
您的问题是Header('Content-type: text/xml');
尝试此操作并确保header()
来电之前 NOTHING :
<?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());
?>
答案 2 :(得分:0)
有时保存带有/不带BOM的UTF-8可以解决这个(和类似的)问题。在保存方法错误的情况下,文件的最开头可能存在一些特殊字节。