cambiar el tipo de salida de mime en php
xml mime-types (5)
Establezca el encabezado Content-Type
:
header(''Content-Type: text/xml'');
Aunque probablemente deberías usar "application / xml" en su lugar.
Tengo un script php. La mayoría de las veces, el script devuelve html, que funciona bien, pero en una ocasión (parámetro? Format = XML) el script devuelve XML en lugar de HTML.
¿Hay alguna forma de cambiar el tipo de mime devuelto de la salida php sobre la marcha de text / html a text / xml o application / xml?
Responderé a la actualización, ya que las respuestas anteriores son buenas.
He leído que Internet Explorer es conocido por ignorar los encabezados de tipo Mime (¿la mayoría de las veces?) Para confiar en el contenido del archivo (lo que puede causar problemas en algunos casos).
Mmm, hice una prueba simple:
<?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 lo muestra correctamente como XML. Incluso si elimino la declaración xml.
Debe indicar qué versión es problemática.
De hecho, como escribí anteriormente, con IE (6 como mínimo), ni siquiera necesita un tipo de contenido, reconoce los datos XML y los muestra como un árbol. ¿Tu XML es correcto?
[Actualización] También intenté con IE7, agregando? Format = xml también, todavía mostrando XML correctamente. Si envío XML mal formado, IE muestra un error. Probado en WinXP Pro SP2 +
header(''Content-type: application/xml'');
Más información disponible en la documentación de PHP para el header()
Debe enviar un encabezado Content-Type
antes de enviar cualquier salida.
header(''Content-Type: text/xml'');
Acabo de usar lo siguiente:
NOTA: Estoy usando "i" para una extensión mejorada de sql.
Start XML file, echo parent node
header("Content-type: text/xml");
echo "<?xml version=''1.0'' encoding=''UTF-8''?>";
echo "<marker>";
Itere a través de las filas, imprimiendo nodos XML para cada
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>";