PHP和XML在<! - ? - >中没有呈现错误

时间:2013-07-30 09:04:17

标签: xml php

我心不在焉地在新服务器上设置了apache和php,但我在旧服务器上呈现xml的php代码在下面的新服务器上没有渲染是错误显示。请有人帮助我:

XML Parsing Error: XML or text declaration not at start of entity
Location: `http://192.168.1.200/file.php`
Line Number 4, Column 1:<?xml version = "1.0" ?><rows><row id = '85'><cell>  </cell><cell> 85 </cell><cell image='folder.gif'> 55 </cell><cell> 61 </cell><cell> 2013-07-27 14:29:15 </cell><cell> ndegwa22@googlemail.com </cell><cell> salland@nts.nl </cell>
^

我的代码

<?php     
            require("config.php");
            header("Content-type:text/xml");
            echo "<?xml version = \"1.0\" ?>";
            echo "<rows>";

            $qry = "SELECT * FROM tickets WHERE parent_id = 0 ORDER BY message_id DESC";
            $res = mysql_query($qry) or die(mysql_error().$qry);

            while ($row = mysql_fetch_array($res))
            {
                echo "<row id = '{$row["id"]}'>";
                    echo "<cell> {$row["id"]} </cell>";
                    echo "<cell image='folder.gif'> {$row["ticket_id"]} </cell>";
                    echo "<cell> {$row["message_id"]} </cell>";
                    echo "<cell> {$row["date_time"]} </cell>";
                    echo "<cell> {$row["from_email"]} </cell>";
                    echo "<cell> {$row["to_email"]} </cell>";
                    echo "<cell> ".xmlEscape($row["subject"])." </cell>";  

                    echo "<cell><![CDATA[";

                        $ar = explode(";",$row["attachment"]);
                        foreach($ar as $key=>$value)
                        {
                            echo "<a target='_blank' href='Mail/attachments/{$value}'>{$value} </a>  &nbsp;";
                        }

                    echo "]]></cell>";
                    echo "<cell> {$row["eid"]}</cell>";
                    echo "<cell> {$row["email_status"]}</cell>";
                    echo "<cell> {$row["ticket_status"]}</cell>";
                    echo "<cell> {$row["entry_datetime"]}</cell>";

                    getChildMailXml($row["id"]);

                echo "</row>";
            }

            echo "</rows>";

?>

2 个答案:

答案 0 :(得分:1)

header("Content-type:text/xml"); echo "<?xml version=\"1.0\" ?>"; Place require(“config.php”)之前不应有空格,行或打印输出;这些行之后的文件。

<?php
    header("Content-type:text/xml");
    echo "<?xml version = \"1.0\" ?>";
    require("config.php");
    echo "<rows>";
    echo "<row id='1'><cell>1</cell></row>";
    echo "</rows>";
?>

config.php

中不应有任何输出

答案 1 :(得分:0)

根据错误消息:

  

XML解析错误:XML或文本声明不在实体的开头   地点:......

Line Number 4, Column 1: <?xml version = "1.0" ?><rows><row id = '85'><cell>  </cell><cell> 85 </cell><cell image='folder.gif'> 55 </cell><cell> 61 </cell><cell> 2013-07-27 14:29:15 </cell><cell> ndegwa22@googlemail.com </cell><cell> salland@nts.nl </cell>
                         ^

您正在输出行号 four 的XML声明(<?xml version = "1.0" ?>)。如果输出XML声明,则必须输出第一行,即行号 one ( - 不是四(!))。

修复脚本的输出以在第一行第一列输出它,你应该没问题。

从您显示的代码不可见引入其他行,但您可以放心,无论提供错误消息的是不在说因此,请放心,这实际上是第四行,而不是第一行, 需要修复此

如果您不了解其他行的介绍地点和原因,请了解PHP如何向客户端输出数据。由于输入和输出是编程中的一个基本领域,我建议您从介绍开始学习,然后通过所有 PHP手册的第一章开始学习:

如果您想在阅读旁边添加一些互动学习,可以使用codecademy上的PHP轨道: