2011-10-29 64 views
38

Estoy generando XML en CakePHP. Pero estoy consiguiendo este error cuando pongo mi XML en un validador:El objetivo de instrucción de procesamiento que coincide con "[xX] [mM] [lL]" no está permitido

The processing instruction target matching "[xX][mM][lL]" is not allowed. 

estoy usando XML disposición correcta con <?php echo $this->Xml->header(); ?> en la parte superior y luego <?php echo $content_for_layout; ?>

Mis resultados son:

<?xml version="1.0" encoding="UTF-8" ?><response type='' outcome='true' message='Login successful!'> 
    <user id='1234' total_number_of_completed_tasks='0' total_number_of_declined_tasks='0' total_number_of_passed_tasks='1' total_number_of_failed_tasks='1' reputation_points='99' deviant_points='0' /> 
     <tasks> 
      <accepted> 
           <accepted_task id='4' type='Good' time_limit='500' details='Good accepted' /> 
           <accepted_task id='5' type='OK' time_limit='660' details='Ok New task' /> 
           <accepted_task id='9' type='Excellent' time_limit='2000' details='Great failed task' /> 
           <accepted_task id='11' type='Your type' time_limit='222' details='Running and swimming all the way to Japan' /> 
           <accepted_task id='7' type='Man' time_limit='744' details='My dirty task' /> 
          </accepted> 
      <pending> 
           <pending_task id='8' type='Women' time_limit='5151' details='Women new task' sender_id='11111' sent_date='2031-01-01 00:00:00' sender_name='Jae Choi' /> 
          </pending> 
      <completed> 
          </completed> 
      <new> 
           <new_task id='5' type='OK' time_limit='660' details='Ok New task' /> 
           <new_task id='8' type='Women' time_limit='5151' details='Women new task' /> 
           <new_task id='4' type='Good' time_limit='500' details='Good accepted' /> 
           <new_task id='10' type='Hello' time_limit='122' details='What is this?' /> 
           <new_task id='3' type='Best' time_limit='880' details='Stop doing work!' /> 
           <new_task id='11' type='Your type' time_limit='222' details='Running and swimming all the way to Japan' /> 
           <new_task id='6' type='Great' time_limit='553' details='Great accepted task' /> 
           <new_task id='7' type='Man' time_limit='744' details='My dirty task' /> 
           <new_task id='9' type='Excellent' time_limit='2000' details='Great failed task' /> 
          </new> 
     </tasks> 
</response> 

¿Hay algo de malo en esto?

+9

¿Ha comprobado que el XML se genera sin ningún espacio en blanco al principio? – elboletaire

Respuesta

64

marmalad y El Boletaire Underave tienen razón de que no se puede comenzar con un espacio, pero esa no es la historia completa. De acuerdo con the XML spec, no puede tener nada en absoluto antes del prólogo XML.

Puesto que usted está utilizando una declaración XML, debe iniciar su archivo con

<?xml version="1.0" ... 

En algunos casos, los caracteres no imprimibles como the byte order mark (BOM) pueden causar problemas mediante la adopción de los primeros bytes de un archivo.

Para un problema más específico de CakePHP, verifique que no tenga líneas en blanco/espacios en blanco al principio o al final de sus archivos (es decir, después de ?> o antes de su <?php).

13

Como El Boletaire Underave said, compruebe si el XML se genera sin ningún espacio en blanco al principio. esto me ayuda con mi xml.

1

Compruebe su archivo XML, podría comenzar con un espacio en blanco. Si su archivo XML comienza con espacios en blanco, se lanzará este tipo de Excepción.

0

antes <?xml ?> etiqueta u no debería tener espacio. esta etiqueta debe estar en la primera línea. esto funcionó para mí

Cuestiones relacionadas