我已经找到了这个问题的答案,但我找不到适合我申请的答案。
我需要以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,页面将无法加载。
答案 0 :(得分:1)
正确的语法是
echo "<URL><![CDATA[".$sermonrow['url']."]]></URL>";
但我宁愿你使用像DOMDocument或SimpleXML这样的XML库来构建你的文档,这个文档更复杂,但你不会像混淆这样的简单错误结束标记名称(请参阅</NAME>
)。