【问题标题】:XML/PHP : Content is not allowed in prologXML/PHP:prolog 中不允许有内容
【发布时间】:2010-06-08 16:05:15
【问题描述】:

我有这个消息错误,我不知道问题出在哪里:

<?php include "DBconnection.class.php";

$sql = DBConnection::getInstance(); 

$requete = "my resquest (which is working)";

$sql->query($requete);  

 $xml = '<?xml version="1.0" encoding="UTF-8"?>';
 $xml .='<GamerCertified>';


            while($row = $sql->fetchArray()){

            $moyenne_services =  ($row['services'] + $row['serviceCli']  + $row['interface'] )/3;
            $moyenne_services = round( $moyenne_services,1);

            $moyenne_ge =  ($row['services'] + $row['serviceCli']  + $row['interface'] + $row['qualite'] + $row['rapport'] ) /5;
            $moyenne_ge = round( $moyenne_ge,1);

             $xml .= '<GSP>';

             $xml .= '<nom>'.$row["nom"].'</nom>';

             $xml .= '<votes>'.$row["nb_votes"].'</votes>';

             $xml .= '<services>'.$moyenne_services.'</services>';

             $xml .= '<qualite>'.$row["qualite"].'</qualite>';

             $xml .= '<prix>'.$row["rapport"].'</prix>';

             $xml .= '<transparence>'.$row["transparence"].'</transparence>';

              $xml .= '<moyenneGenerale>'.$moyenne_ge.'</moyenneGenerale>'; 

             $xml .= '<serveursDedies>'.$row["offreDedie"].'</serveursDedies>';

             $xml .= '</GSP>';
        }


 $xml .= '</GamerCertified>';
 echo $xml;

谢谢

(PS: FF /chrome 与无标签相呼应:bc2x56.99.89.8081ckras1710.09.0080crazy-fun-game11010.010.00100crystal-serv349.79.69.509.60dedicore69.49.38.609.21)

【问题讨论】:

    标签: php xml


    【解决方案1】:

    XML Preamble 应该在自己的行上。您的标签 未被识别为标签。

    只需在新行添加开始标签,错误就会消失。

    编辑:请试试这个,

     $xml = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
     $xml .='<GamerCertified>';
    

    【讨论】:

    • 我这样做了,但现在:序言中不允许内容.. ='(
    • 刚刚试了一下,同样的错误:prolog 中不允许有内容。该文件以 UTF-8 编码,没有 BOM (notepad++) ='(
    • 正确的名称是 XML 声明。并且后面不需要换行符。
    【解决方案2】:

    我认为问题出在其他地方。尝试使用以下代码:

    $xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
    

    代替:

    $xml = '<?xml version="1.0" encoding="UTF-8"?>';
    

    这是因为您将整个 XML 文本存储在 PHP 变量中,这有时会出错。

    另外请注意不要在 XML 开始标记 (&lt;?xml...) 之前打印任何空白字符。并且只需在 XML 定义结束标记 (...encoding="UTF-8"?&gt;) 后使用一个回车符(如键盘的“回车”键),以便启动 XML 的第一个开始标记 (&lt;GameCertified&gt;)。

    希望对你有帮助。

    【讨论】:

      【解决方案3】:

      好吧,首先,删除开始 &lt;?php 标记之前的空格。其次,这是脚本中唯一的文件吗? &lt;/GamerCertified&gt; 标记后是否有任何非空白字符?如果是这样,这很可能是问题所在。

      【讨论】:

      • opening 和 标签后没有空格。
      【解决方案4】:

      我遇到了同样的问题。

      最后发现它是包含文件(在您的情况下是“DBconnection.class.php”文件)

      包含文件保存在 utf-8 上。文件编辑器可以选择保存在“utf-8”或“utf-8 without BOM”中,将我的包含文件更改为第二个选项……并删除了 xml 标记之前的内容。

      【讨论】:

        猜你喜欢
        • 2011-02-26
        • 2016-11-28
        • 2016-09-06
        • 1970-01-01
        • 2011-09-22
        • 2011-10-23
        • 2013-07-05
        • 2022-12-10
        • 2011-07-05
        相关资源
        最近更新 更多