XML开头的空格

时间:2014-04-30 16:10:09

标签: php xml

我有以下返回XML的PHP​​代码:

<?php
header("Content-Type:text/xml");
header("Expires:Mon,6 Jul 1997 05:00:00 GMT");
header("Last-Modified:".gmdate("D,d M Y H:i:s")."GMT");
header("Cache-Control:no-store,no-cache,must-revalidate");
header("Cache-Control:post-check=0,pre-check=0",false);
header("Pragma:no-cache");
include('database_connection.php');
$category=$_GET['category'];
$city=$_GET['city'];
$country=$_GET['country'];
$dom=new DOMDocument("1.0","UTF-8");
$node=$dom->createElement("elements");
$parnode=$dom->appendChild($node);
$query="select * from elements where elementId=any(select elementId from citycategoryelements where cityId="
        . "any(select cityId from city where name='$city' and country='$country') and categoryId="
        . "any(select categoryId from categories where name='$category'))";
$result=mysqli_query($dbc,$query);
if(!$result){
echo"Could not successfully run query from DB: ".mysql_error();
exit;
}
while($row=mysqli_fetch_array($result,MYSQLI_ASSOC)){
$node=$dom->createElement("element");
$newnode=$parnode->appendChild($node);
$newnode->setAttribute("name",$row['name']);
$newnode->setAttribute("address",$row['address']);
$newnode->setAttribute("lat",$row['lat']);
$newnode->setAttribute("lng",$row['lng']);
$newnode->setAttribute("stars",$row['stars']);
}
echo $dom->saveXML();

返回的XML如下所示:

  <?xml version="1.0" encoding="UTF-8"?>
<elements><element name="The Melting Pot" address="14 Mercer St, Seattle, WA" lat="47.624561" lng="-122.356445" stars="5"/><element name="Ipanema Grill" address="1225 1st Ave, Seattle, WA" lat="47.606365" lng="-122.337654" stars="5"/></elements>

问题是在文档的开头有空格,我似乎无法弄清楚它们来自PHP脚本的位置。

我在Stack Owerflow和其他网站上搜索了这个问题,但没有任何效果。

如果有人在此之前遇到过这种情况并且知道如何帮助我,那就太好了。

提前致谢!

1 个答案:

答案 0 :(得分:0)

通常最好在发送标头之前包含所有文件。 PHP应该抛出错误,告诉您在发送输出后无法发送标题。

通常,调试这样的问题最好通过向下跟踪堆栈跟踪来实现。

有时最原始的形式是调试也是最成功的。 检查整个代码中的各个点可以缩小问题范围:

ob_start();

include('some_file.php');

if(strlen(ob_get_clean()) > 0) {
    die('Output dispatched before this point.');
}
相关问题