Подтвердить что ты не робот

Изменить mime-тип вывода в php

У меня есть php script. В большинстве случаев script возвращает html, который работает нормально, но в одном случае (параметр? Format = XML) script возвращает XML вместо HTML.

Есть ли способ изменить возвращаемый тип mime вывода php на лету из text/html в text/xml или application/xml?

4b9b3361

Ответ 1

header('Content-type: application/xml');

Дополнительная информация доступна в документации PHP для header()

Ответ 2

Задайте заголовок Content-Type:

header('Content-Type: text/xml');

Хотя вы, вероятно, должны использовать "application/xml" вместо этого.

Ответ 3

Вы должны отправить заголовок Content-Type до, который вы отправляете.

header('Content-Type: text/xml');

Ответ 4

Я отвечу на обновление, так как предыдущие ответы хороши.
Я прочитал, что Internet Explorer хорошо известен тем, что игнорировал заголовки Mime-типа (большую часть времени?), Чтобы полагаться на содержимое файла (что может вызвать проблемы в некоторых случаях).

Ммм, я сделал простой тест:

<?php
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root><foo a="b">Tada</foo></root>';
?>

Internet Explorer 6 отображает его правильно как XML. Даже если я удалю объявление xml.
Вы должны указать, какая версия является проблематичной.

Собственно, как я писал выше, с IE (по крайней мере, 6), вам даже не нужен тип контента, он распознает данные XML и отображает его как дерево. Правильно ли ваш XML?

[Update] Пробовал также IE7, добавив? format = xml, все еще правильно отображая XML. Если я отправляю неверный XML, IE отображает ошибку. Протестировано на WinXP Pro SP2 +

Ответ 5

Я просто использовал следующее:
ПРИМЕЧАНИЕ. Я использую "i" для улучшенного расширения sql.

Start XML file, echo parent node
header("Content-type: text/xml");
echo "<?xml version='1.0' encoding='UTF-8'?>";
echo "<marker>";

Итерации по строкам, печать XML-узлов для каждого

while ($row = @mysqli_fetch_assoc($results)){
  // Add to XML document node
  echo '<marker ';
  echo 'id="' . $ind . '" ';
  echo 'name="' . parseToXML($row['name']) . '" ';
  echo 'address="' . parseToXML($row['address']) . '" ';
  echo 'lat="' . $row['lat'] . '" ';
  echo 'lng="' . $row['lng'] . '" ';
  echo 'type="' . $row['type'] . '" ';
  echo '/>';
}

// End XML file
echo "</marker>";