Показать сообщение отдельно
  #1 (permalink)  
Старый 10.09.2011, 23:21
Новичок на форуме
Отправить личное сообщение для skelos Посмотреть профиль Найти все сообщения от skelos
 
Регистрация: 10.09.2011
Сообщений: 8

Странный формат выдачи xml
При разработке небольшого проекта появилась такая проблема: в БД хранится текст, форматированный html-тегами, вроде такого:
Первая строка <br/> Вторая строка

С помощью Ajax'а на сервер посылается запрос на эту строку. Сценарий php на сервере получает запрос и вытаскивает из БД нужную строку, возвращая её js-файлу в виде xml. Выглядит php-скрипт примерно так:
$post = // вытащенная из БД строка
header("Content-Type: text/xml");
echo "<?xml version='1.0' encoding='utf-8'?>";
echo "<!DOCTYPE result SYSTEM 'post.dtd'>";
?>

<!-- Возвращаю ответ в формате XML -->
<result>
    <post><![CDATA[<?php echo $post; ?>]]></post>
</result>


js-скрипт строку получает, всё хорошо, всё html-форматирование сохранено. Но, проблема вот в чём. При разборе полученного xml непонятно кем (я думаю, браузером) все спец. символы (<, >, ', ", ...) заменяются на их коды (&lt;, &gt;, ...), т.е. выводится в итоге не форматированный текст, а текст с тегами.
При этом сервер возвращает именно сами тэги (посмотрел в FireBug'e):
Код:
Ответ POST:
<?xml version='1.0' encoding='utf-8'?><!DOCTYPE result SYSTEM 'post.dtd'>
<!-- Возвращаю ответ в формате XML -->
<result>
    <post><![CDATA[Строка 1<br/>Строка 2]]></post>
</result>
Но в том же FireBug'е показывается такой XML-ответ:
Код:
<result>
<post>Строка 1&lt;br/&gt;Строка 2</post>
</result>
Поэтому никак не могу понять, где происходит эта ненужная подмена и кем - сервером или браузером. Помогите, пожалуйста, разобраться.
Ответить с цитированием