第6行第1行的错误:PHP输出上的XML错误

时间:2013-07-26 13:03:11

标签: php xml

我在使用PHP生成有效的xml文件(对于rss feed)时遇到问题。问题是:没有空字符,也没有换行符或制表符,但rss阅读器(在我的案例中为Safari)会抛出错误:

ASDF

我的PHP代码是:

<?php
header("Content-Type: application/rss+xml");

if(!isset($_GET['searchQuery']) || $_GET['searchQuery'] == "")
{
    include_once './session_ajax.php';
    include("./include.php"); 
    require_once("./classes/myclass/myclass.class.php");
    $gmap_ajax = new myclass();
}

$query=sql_query("SELECT item_query, item_date, item_country FROM items WHERE 1 GROUP BY item_query ORDER BY item_id LIMIT 20",1);

$xml = "\n<rss version=\"2.0\">\n";
$xml .= "\t<channel>\n\t\t<title>myClass.com RSS Feed</title>\n\t\t<link>"._siteurl."feed.xml</link>\n\t\t<description>myClass.com is the largest...</description>\n\t\t<language>en-en</language>\n\t\t<pubDate>".date("r")."</pubDate>\n";

while($row=sql_fetch_array($query,1))
{
    $date = date("Y-m-d", $row['item_date']);
    $item_query2 = $row['item_query'];
    $item_query = str_replace(" ", "+", $row['item_query']);
    $xml .= "\t\t<item>\n\t\t\t<title>".$item_query2."</title>\n\t\t\t<link>"._siteurl."/".$item_query."/".$row['item_country']."</link>\n\t\t\t<description><![CDATA[Here is some more description]]></description>\n\t\t\t<pubDate>".date("r")."</pubDate>\n\t\t</item>\n";
}
$xml .= "\t</channel>\n</rss>";
echo trim("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
echo $xml;
?>

在PHP文件中,在&lt;?php标记之前没有空格或其他任何内容,并且在&gt;后面没有任何内容标签...

我正在使用Adobe CS5作为编辑器。

在Safari以及每个在线验证器中,我发现我收到此错误:

error on line 1 at column 6: XML declaration allowed only at the start of the document

问题是,我可以看到源代码中的空白区域,但错误位于&lt;?xml标记的“l”。

有没有人遇到过这个问题并有想法或只是提示正确的方向来解决这个问题?

编辑:

我也尝试使用Noteped ++和Ultraedit32打开并保存它,然后将其上传到服务器......同样的问题......

4 个答案:

答案 0 :(得分:0)

检查你的回音修剪,你看到php标签,第一个是在引号内,而结束的是在引号之外,这是你的问题。

答案 1 :(得分:0)

检查输出(在文本/十六进制编辑器中)是否有空格。

如果您看不到任何内容,则可能是您正在生成BOM。使用File BOM Detector(Windows)等工具扫描文件(记住包含及其包含内容)。

答案 2 :(得分:0)

谢谢大家的回答!特别谢谢你,Deebster。

溶剂化是如此简单:

include("./include.php");

在这个文件中我发现了空白区域!

我很抱歉,我浪费了你的时间,但如果其他人解决了这个问题:

另外,如果你绝对确定,请控制每个包含的文件两次......!

日Thnx。 agian和最好的问候!

英格玛

答案 3 :(得分:0)

手动检查完所有文件后,我无法摆脱错误。我使用Dreamweaver作为我的文本编辑器。我使用了&#34;应用源格式&#34;功能,它为我删除了空白区域。这摆脱了错误