2011-09-28 25 views
5

Estoy usando PHP para generar un XML personalizado basado en los valores almacenados en una base de datos MySQL. Tengo el siguiente al inicio de la condición:Declaración XML que no funciona bien con PHP

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

(También he probado esta variación:.

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

en vano)

Sin embargo, esto siempre se da salida (en todos los navegadores, e incluso cuando se ve como un archivo descargado de wget) como:

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

En alguna parte de la línea, se soltaron las comillas simples alrededor del número de versión y la codificación. ¿Dónde me equivoqué y qué puedo hacer para solucionarlo? Recibo errores de mi analizador y creo que es porque esta declaración no sigue el estándar XML de tener comillas simples o dobles alrededor de estos valores.

+1

Eso es realmente extraño que PHP caería comillas, pero aun así se debe utilizar comillas dobles isntead de comillas simples para los documentos XML. – regality

+0

Hmph. Sigue siendo el mismo resultado, pero supongo que tiene razón al utilizar comillas dobles. – esqew

+0

Me parece que se está produciendo un postprocesamiento de salida. No tengo experiencia con eso, pero tal vez algo así como 'tidy.clean_output = On' en tu configuración' ini'? Parece poco probable que "Tidy" elimine las comillas en lugar de agregarlas, pero quién sabe. Quizás alguna herramienta similar de postprocesamiento esté configurada en la configuración de su servidor. (Ya se trate de postprocesamiento PHP, de postprocesamiento realizado por su servidor web). –

Respuesta

1

Creo que esto se debe a que el tipo de contenido de su documento ya está configurado en texto/html (de forma predeterminada por php).

La solución a esto es configurar esto como un encabezado en lugar de repetirlo.

por ejemplo:

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

para configurar el juego de caracteres:

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

y asegúrese de que se establece este ANTES de salida (eco) cualquier otra cosa.

Espero que ayude :)

+1

Eso no explicaría por completo la eliminación automática de presupuestos. – Evert