【问题标题】:using <![CDATA in xml response在 xml 响应中使用 <![CDATA
【发布时间】:2017-11-16 04:12:51
【问题描述】:

我一直在寻找这个问题的答案,但我找不到适合我的应用程序的答案。

我需要以 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,页面将无法加载。

【问题讨论】:

  • 您应该将do-&gt;while 更改为常规的while 循环,以丢弃不必要的重复mysql_fetch_assoc() 调用

标签: php xml cdata


【解决方案1】:

正确的语法是

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

但我宁愿你使用像 DOMDocument 或 SimpleXML 这样的 XML 库来构建你的文档,更复杂,但你不太容易出现简单的错误,比如混淆结束标签名称(参见 @987654324 @)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 2011-05-31
    • 2012-10-23
    相关资源
    最近更新 更多