在PHP中动态生成XML - 解析错误

时间:2012-12-12 11:33:35

标签: php xml

我正在动态生成xml文件,并在包含新闻文字时收到错误。 Error: XML Parsing Error: undefined entityERROR
通过删除新闻文字 xml生成完美。这是我正在使用的代码。

$sqlNews    =   "SELECT * FROM news";

$runSqlNews =   mysql_query($sqlNews);

while ($rowSqlNews  =   mysql_fetch_array($runSqlNews)) 
    $arrSqlNews[]   =   $rowSqlNews;


    header('Content-type: text/xml');
    header('Pragma: public');
    header('Cache-control: private');
    header('Expires: -1');
    echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";

    echo '<xml>';

for($i=0;$i<count($arrSqlNews);$i++) 
{
    echo "<news>";
        echo "<newsId>".$arrSqlNews[$i][id]."</newsId>";
        echo "<newsAuthor>".$arrSqlNews[$i][news_author]."</newsAuthor>";
        echo "<newsText>".$arrSqlNews[$i][news_text]."</newsText>";
        echo "<description>".$arrSqlNews[$i][news_description]."</description>";
        echo "<image>".$arrSqlNews[$i][news_image]."</image>";
    echo "</news>";       
}
    echo '</xml>';

希望我的问题很明确。在此先感谢!!

2 个答案:

答案 0 :(得分:2)

每当您使用字符串时,请考虑添加CDATA标记,因为特殊字符可能会破坏您的XML解析。

echo "<newsText><![CDATA[".$arrSqlNews[$i][news_text]."]]></newsText>";

答案 1 :(得分:1)

试试这个:

echo "<newsText><![CDATA[".$arrSqlNews[$i][news_text]."]]></newsText>";

它将阻止浏览器解析该字段内容中的标记。