Domanda

Ho uno script php. Il più delle volte lo script restituisce html, che funziona bene, ma in un'occasione (parametro? Formato = XML) lo script restituisce XML anziché HTML.

Esiste un modo per cambiare al volo il tipo mime restituito dell'output php da text / html a text / xml o application / xml?

È stato utile?

Soluzione

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

Ulteriori informazioni disponibili nella documentazione di PHP per header ()

Altri suggerimenti

Imposta l'intestazione Content-Type :

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

Anche se probabilmente dovresti usare " application / xml " invece.

Devi inviare un'intestazione Content-Type prima di inviare qualsiasi output.

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

Risponderò all'aggiornamento, poiché le risposte precedenti sono buone.
Ho letto che Internet Explorer è noto per aver ignorato le intestazioni di tipo Mime (il più delle volte?) Per fare affidamento sul contenuto del file (che in alcuni casi può causare problemi).

Mmm, ho fatto un semplice test:

<?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 visualizza correttamente come XML. Anche se rimuovo la dichiarazione xml.
Dovresti indicare quale versione è problematica.

In realtà, come ho scritto sopra, con IE (almeno 6), non hai nemmeno bisogno di un tipo di contenuto, riconosce i dati XML e li visualizza come un albero. Il tuo XML è corretto?

[Aggiornamento] Provato anche con IE7, aggiungendo anche? format = xml, mostrando ancora correttamente XML. Se invio XML non valido, IE visualizza un errore. Testato su WinXP Pro SP2 +

header('Content-Type: application/xml; charset=utf-8');

Puoi aggiungere anche la codifica nella stessa riga. Ho aggiunto utf-8, che è il più comune.

Ho appena usato quanto segue:
NOTA: sto utilizzando " i " per sql estensione migliorata.

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

Scorrere le righe, stampando nodi XML per ciascuna

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>";
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top