在xml响应中使用<! - [CDATA

时间:2017-11-16 04:12:52

标签: php xml cdata

我已经找到了这个问题的答案,但我找不到适合我申请的答案。

我需要以xml格式给出sql查询的响应,但响应是一个url所以我需要使用cdata。这是我的代码。

if ($_POST['action']=="getSermon")
{
    //echo"You got it";
    $SQL = "SELECT * FROM sermons";

    $allsermon = mysql_query($SQL);
    $sermonrow = mysql_fetch_assoc($allsermon);

    header('Content-type: text/xml; charset=utf-8');
    header('Pragma: public');        
    header('Cache-control: private');
    header('Expires: -1');
    $xml = '<?xml version="1.0" encoding="utf-8"?>';
    echo $xml;
    echo "<SERMON_INFO>";   
    do {
        echo "<SERMON>";    
        echo "<ID>" . $sermonrow['id'] . "</ID>";
        echo "<NAME>" . $sermonrow['Name'] . "</NAME>"; 
        echo "<URL>".<![CDATA[$sermonrow['url']]>."</NAME>";
        //echo "<URL>". $sermonrow['url'] . "</URL>";   
        echo "</SERMON>";   
        mysql_free_result($result);
    } while ($sermonrow = mysql_fetch_assoc($allsermon));
    mysql_free_result($allsermon);
    echo "</SERMON_INFO>";
    mysql_close($db);  

}

当我这样做时,我收到错误500,页面将无法加载。

1 个答案:

答案 0 :(得分:1)

正确的语法是

echo "<URL><![CDATA[".$sermonrow['url']."]]></URL>";

但我宁愿你使用像DOMDocumentSimpleXML这样的XML库来构建你的文档,这个文档更复杂,但你不会像混淆这样的简单错误结束标记名称(请参阅</NAME>)。