2011-09-28 11 views
5

Sto usando PHP per generare XML personalizzati in base ai valori memorizzati in un database MySQL. Ho il seguente all'inizio della condizione:La dichiarazione XML non sta funzionando bene con PHP

echo '<?xml version="1.0" encoding="UTF-8"?>'; 

(Ho anche provato questa variante:.

echo "<?xml version='1.0' encoding='UTF-8'?>"; 

inutilmente)

Tuttavia, questo sarà sempre trasmesso (in tutti i browser e anche se visti come un file scaricato da wget) come:

<?xml version=1.0 encoding=UTF-8 ?> 

Da qualche parte lungo la linea, le virgolette singole intorno al numero di versione e alla codifica sono state eliminate. Dove ho sbagliato e cosa posso fare per risolvere questo problema? Sto ricevendo errori dal mio parser e credo che sia perché questa dichiarazione non sta seguendo lo standard XML di avere virgolette singole o doppie attorno a questi valori.

+1

che è davvero bizzarro che PHP scenderebbe citazioni, ma anche così si dovrebbe usare le virgolette isntead di virgolette singole per i documenti XML. – regality

+0

Hmph. Ancora lo stesso risultato, ma immagino tu abbia ragione nell'utilizzare le virgolette. – esqew

+0

Mi sembra che si stia verificando una post-elaborazione degli output. Non ho esperienza con esso, ma forse qualcosa come 'tidy.clean_output = On' nelle tue impostazioni' ini'? Sembra improbabile che 'Tidy' rimuova le virgolette invece di aggiungerle, ma chi lo sa. Forse alcuni strumenti di post-elaborazione simili sono configurati sulla configurazione del tuo server. (Che si tratti di post-elaborazione PHP, di post-elaborazione eseguita dal tuo server web). –

risposta

1

Penso che questo sia dovuto al fatto che il tipo di contenuto del documento è già impostato su text/html (per impostazione predefinita su php).

La soluzione a questo è impostare come intestazione piuttosto che farlo eco.

esempio:

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

per impostare il set di caratteri:

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

e assicurarsi che si imposta questa PRIMA di uscita (eco) qualsiasi altra cosa.

Speranza che aiuta :)

+1

Questo totalmente non spiegherebbe la rimozione automatica delle virgolette. – Evert

Problemi correlati