Qué caracteres debe ser escapado de los documentos XML, o donde puedo encontrar una lista?

InformationsquelleAutor Julius A | 2009-07-07

9 Comentarios

  1. 1302

    Si el uso apropiado de la clase o en la biblioteca, que va a hacer el escape para usted. Muchas XML problemas son causados por la concatenación de cadenas.

    XML caracteres de escape

    Sólo hay cinco:

    "   "
    '   '
    <   &lt;
    >   &gt;
    &   &amp;

    Escapar de caracteres depende de donde el carácter especial que se utiliza.

    Los ejemplos pueden ser validados en W3C Markup Validation Service.

    Texto

    La manera más segura es escapar de los cinco caracteres en el texto, sin embargo, los tres personajes ", ' y > no tiene por qué ser escapado en el texto:

    <?xml version="1.0"?>
    <valid>"'></valid>

    Atributos

    La manera más segura es escapar de los cinco personajes en los atributos, sin embargo, la > personaje no tiene por qué ser escapado de atributos:

    <?xml version="1.0"?>
    <valid attribute=">"/>

    La ' personaje no tiene por qué ser escapado en los atributos de si las comillas son ":

    <?xml version="1.0"?>
    <valid attribute="'"/>

    Asimismo, el " no tiene por qué ser escapado en los atributos de si las comillas son ':

    <?xml version="1.0"?>
    <valid attribute='"'/>

    Comentarios

    Todos los 5 caracteres especiales no debe se escapó en los comentarios:

    <?xml version="1.0"?>
    <valid>
    <!-- "'<>& -->
    </valid>

    CDATA

    Todos los 5 caracteres especiales no debe se escapó en CDATA secciones:

    <?xml version="1.0"?>
    <valid>
    <![CDATA["'<>&]]>
    </valid>

    Instrucciones de procesamiento

    Todos los 5 caracteres especiales no debe se escapó en el procesamiento de XML instrucciones:

    <?xml version="1.0"?>
    <?process <"'&> ?>
    <valid/>

    XML vs HTML

    HTML ha su propio conjunto de códigos de escape que cubrir mucho más caracteres.

    • La última fuente: w3.org/TR/xml/#syntax
    • Pero como HTML, solo tendríamos que escapar de los cinco de arriba demasiado a la derecha?
    • Os ruego que no escriba su propia XML/HTML escapar de código. El uso de una función de biblioteca o usted está obligado a perder un caso especial.
    • También para los saltos de línea que usted necesita para utilizar &#xA; &#xD; y &#x9; para la ficha, si usted necesita estos personajes en un atributo.
    • Retorno de carro &#xD sólo se incluye por compatibilidad con versiones anteriores, como se señaló en la sección que precede a la que está vinculada por MicSim. Evitar el uso de ella, ya que es el éter removido o sustituido por &#xA.
    • Si vas a hacer un Buscar/Reemplazar en estos, solo recuerda hacer el &amp; reemplazo antes que los demás.
    • Yo estaba a punto de hablar de lo mismo, o de lo contrario todos los otros reemplazados caracteres será dañado, y cosas como &quot; será cambiado a &amp;quot;
    • Aviso, que en HTML que en realidad sólo tiene que escapar < y &. Mientras que los otros tres también están definidos, no hay realmente ninguna necesidad de escapar de ellos, dentro de XML válido
    • De la Wikipedia: «Todo permitido de caracteres Unicode, puede ser representado por un carácter numérico de referencia.» Así que hay un montón más de 5.
    • freeformatter.com/xml-escape.html#ad-output uso de este servicio para escapar de xml.
    • Me encontré con el mismo para ser verdad en mis pruebas. Se me escapó todos 5 originalmente para estar seguro, aunque el signo de por sí era el objetivo original para el error. A más pruebas me fue encontrar que el apóstrofo, por ejemplo, estaba haciéndolo a través de la aplicación sin problemas en absoluto.
    • Impresionante! Esta pieza de información que me permita generar Genérico Asignador de Interfaces con MyBatis generador para mi proyecto de integración continua
    • Que puede escapar los caracteres que desee (incluso cada personaje. Sólo menos, y comercial, y la secuencia «]]>» en realidad importa si usted está tratando de convertir una cadena arbitraria en XML contenido (que es, usted no quiere que cualquier etiqueta o XML construye para ser detectado dentro de ella). «]]>» es infrecuente, por lo que algunas personas lo ignoran; o puede cambiar el «>» en a &gt; o &#62; o &#x3e;

  2. 90

    Tal vez esto le ayudará a:

    Lista de XML y HTML referencias de entidades de caracteres:

    En SGML, HTML y XML, los documentos, la
    construcciones lógicas conocido como carácter
    los datos y valores de atributo consisten en
    las secuencias de caracteres, en el que cada
    el carácter se puede manifestar directamente
    (en representación de sí mismo), o puede ser
    representada por una serie de caracteres
    se llama un personaje de referencia, de los cuales
    hay dos tipos: numéricos
    referencia a los caracteres y un carácter
    entidad de referencia. En este artículo se enumeran
    el carácter de entidad de referencias que
    son válidos en documentos HTML y XML.

    Que el artículo enumera los siguientes cinco predefinidos entidades XML:

    quot  "
    amp   &
    apos  '
    lt    <
    gt    >
  3. 71

    De acuerdo a las especificaciones de la World Wide Web Consortium (w3C), hay 5 personajes que no deben aparecer en su forma literal en un documento XML, excepto cuando se usa como marcado delimitadores o dentro de un comentario, una instrucción de procesamiento, o de una sección CDATA. En todos los demás casos, estos personajes deben ser reemplazados o bien mediante la correspondiente entidad o el número de referencia de acuerdo a la siguiente tabla:

    Carácter Originalentidad XML reemplazoXML numérico de reemplazo

    <                              &lt;                                    &#60;                                    

    >                              &gt;                                   &#62;                                    

    "                               &quot;                               &#34;                                    

    &                              &amp;                               &#38;                                    

    '                               &apos;                               &#39;                                    

    Aviso de que dichas entidades pueden ser utilizadas también en HTML, con la excepción de &apos;, que se introdujo con XHTML 1.0 y no se ha declarado en HTML 4. Por este motivo, y para garantizar la retro-compatibilidad, la especificación XHTML recomienda el uso de &#39; lugar.

    • XML predefine los cinco entidades, sino que absolutamente NO se especifica que no se puede usar cualquiera de los cinco personajes en su forma literal. < y & tiene que ser escapado en todas partes (excepto CDATA). » y » sólo tiene que ser escapado en los valores de atributo, y sólo si la correspondiente cita de carácter es el mismo. Y > en realidad, nunca ha de ser escapado.
    • Como se ha indicado anteriormente, < > «& » no tiene que ser escapado cuando se usa como marcado delimitadores o dentro de un comentario, una instrucción de procesamiento, o de una sección CDATA. es decir, cuando se utiliza < > como una etiqueta XML no escapar de ella. Lo mismo para un comentario (te escape un & en una línea de comentarios de un archivo XML? No es necesario, y el XML es válido aún si no). Esto está claramente especificada en el recomendaciones oficiales de XML del W3C.
    • debe ser escapado si se sigue ]] dentro de los contenidos, a menos que sea la intención de ser parte de la ]]> delimitador que indica el final de una sección CDATA.
    • De no ser un nigromante, pero @Albz es incorrecto decir que estos personajes DEBEN ser entidades en el contenido. Consulte la sección 2.4 en w3.org/TR/REC-xml/#NT-CharData. El TL;DR versión de la que se es que en chardata contenido de los elementos, &amp; y &lt; siempre tienen que ser entidades. El &gt; carácter PUEDE ser entidades, aunque DEBE ser cuando aparecen en el literal de cadena «]]>» porque de lo contrario que se lea como final de una sección CDATA. Por comillas simples y comillas dobles, se puede escapar si quieres. Eso es todo, por chardata en el interior de los elementos. Otros componentes de XML tiene otras reglas.
  4. 49

    Escapar de los personajes es diferente para las etiquetas y los atributos.

    Etiquetas:

     < &lt;
     > &gt; (only for compatibility, read below)
     & &amp;

    Para los atributos:

    " &quot;
    ' &apos;

    http://www.w3.org/TR/2008/REC-xml-20081126/#syntax

    El carácter de y comercial (&) y el corchete izquierdo (<) no debe
    aparecen en su forma literal, excepto cuando se usa como marcado delimitadores,
    o dentro de un comentario, una instrucción de procesamiento, o de una sección CDATA. Si
    son necesarios en otros lugares, deben ser escapado usando numéricos
    las referencias de caracteres o las cadenas de caracteres «&amp; » y «&lt;»
    respectivamente. El soporte de ángulo recto (>) puede ser representado mediante la
    cadena » &gt; «, y debe, por compatibilidad, se escapó el uso de cualquiera de los
    «&gt; «o una referencia de carácter cuando aparece en la cadena» ]]>
    «en su contenido, al que la cadena no es la que marca el fin de una CDATA
    sección.

    Para permitir que los valores de atributo para contener tanto las comillas dobles y simples
    el apóstrofo o de un solo carácter de comilla (‘) puede ser representado como»
    &apos; «, y el carácter de comillas dobles ( «») como » &quot; «.

    • Esto implica que para los atributos de sólo cita necesitan ser escapado, pero que se suma a los otros tres personajes
  5. 27

    Nuevo, una respuesta simplificada a un viejo, frecuentes pregunta…

    Simplificado XML Escape (priorizadas, 100% completa)

    1. Siempre (90% importante recordar)

      • Escapar < como &lt; menos < está comenzando un <tag/>.
      • Escapar & como &amp; menos & está comenzando un &entidad;.
    2. Los Valores De Atributo (9% importante recordar)

      • attr=" 'Comillas simples' están bien dentro de comillas dobles."
      • attr=' "Comillas dobles" están bien dentro de las comillas simples.'
      • Escapar " como &quot; y ' como &apos; lo contrario.
    3. Comentarios, CDATA, y Instrucciones De Procesamiento (0.9% importante recordar)

      • <!-- Dentro de comentarios --> nada tiene que ser escapado, pero no -- se permiten cadenas.
      • <![CDATA[ Dentro de CDATA ]]> nada tiene que ser escapado, pero no ]]> se permiten cadenas.
      • <?PITarget Dentro de PIs ?> nada tiene que ser escapado, pero no ?> se permiten cadenas.
    4. Esoterica (0.1% importante recordar)

      • Escapar ]]> como ]]&gt; menos ]]> es el final de una sección CDATA.
        (Esta regla se aplica a los datos de carácter en general – incluso fuera de una sección CDATA.)
    • Otra regla vale la pena destacar: ]]> debe ser escapado como ]]&gt;, incluso cuando no en una sección CDATA. La manera más fácil de lograr que se puede siempre de escape > como &gt;.
    • Gracias, @MichaelKay. He incorporado a su útil nota sobre ]]> pero decidió relegarlo a esoterica en lugar de sugerir que > siempre de escape (que no tiene por qué ser, como usted sabe). Mi objetivo aquí para hacer el XML escapar de las reglas de fácil de recordar y 100% exacta.
  6. 23

    además de lo que comúnmente se conoce cinco caracteres [<, >, &, «, ‘] también me gustaría escapar el carácter de tabulación vertical (0x0B). Es válido UTF-8, pero no es válida en XML 1.0, e incluso muchas bibliotecas (incluyendo libxml2) te lo pierdas y en silencio la salida XML no válido.

  7. 7

    Abreviada de: http://en.wikipedia.org/wiki/XML#Escaping

    Hay cinco entidades predefinidas:

    &lt; represents "<"
    &gt; represents ">"
    &amp; represents "&"
    &apos; represents '
    &quot; represents "

    «Todo permitido de caracteres Unicode, puede ser representado con una referencia de carácter numérico. «Por ejemplo:

    &#20013;

    La mayoría de los caracteres de control y otros intervalos unicode están específicamente excluidos, lo que significa (creo) que no puede ocurrir ya sea de escape o directa:

    http://en.wikipedia.org/wiki/Valid_characters_in_XML

  8. 3

    Depende del contexto. Para el contenido, es el < y &, y ]]>(a pesar de cadena de 3 en lugar de uno char). Los valores de atributo, es < y & y «y». Para CDATA es ]]>.

Dejar respuesta

Please enter your comment!
Please enter your name here