Ответ 1
header('Content-type: application/xml');
Дополнительная информация доступна в документации PHP для header()
У меня есть php script. В большинстве случаев script возвращает html, который работает нормально, но в одном случае (параметр? Format = XML) script возвращает XML вместо HTML.
Есть ли способ изменить возвращаемый тип mime вывода php на лету из text/html в text/xml или application/xml?
header('Content-type: application/xml');
Дополнительная информация доступна в документации PHP для header()
Задайте заголовок Content-Type
:
header('Content-Type: text/xml');
Хотя вы, вероятно, должны использовать "application/xml" вместо этого.
Вы должны отправить заголовок Content-Type
до, который вы отправляете.
header('Content-Type: text/xml');
Я отвечу на обновление, так как предыдущие ответы хороши.
Я прочитал, что 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 +
Я просто использовал следующее:
ПРИМЕЧАНИЕ. Я использую "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>";