У меня есть PHP-скрипт. В большинстве случаев скрипт возвращает html, который работает нормально, но однажды (параметр? Format = XML) скрипт возвращает 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» вместо этого.
Я отвечу на обновление, так как предыдущие ответы хороши.
Я прочитал, что 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?
[Обновление] Пробовал также с IE7, добавив? Format = xml тоже, по-прежнему отображая XML правильно. Если я отправляю неверный XML, IE отображает ошибку. Протестировано на WinXP Pro SP2 +
Перед отправкой любого результата вы должны отправить заголовок Content-Type
.
header('Content-Type: text/xml');
Я просто использовал следующее:
ПРИМЕЧАНИЕ. Я использую «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>";