используя & lt;! [CDATA в ответе xml

Я искал ответ на этот вопрос, но мне не удалось найти ответ, который подходит для моего приложения.

Мне нужно дать ответ на запрос SQL в формате XML, но ответ является 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

Решение

Правильный синтаксис

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

Но я бы предпочел, чтобы вы использовали библиотеку XML, как DOMDocument или же SimpleXML сделать документ более сложным, но вы будете менее подвержены таким простым ошибкам, как перепутывание имени закрывающего тега (см. </NAME>).

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector