У меня есть 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>";