Pregunta ¿Qué personajes necesito para escapar en documentos XML?


¿Qué caracteres deben escaparse en documentos XML, o dónde podría encontrar esa lista?


783
2017-07-07 12:07


origen


Respuestas:


Si usa una clase o biblioteca apropiada, ellos escaparán por usted. Muchos problemas XML son causados ​​por la concatenación de cadenas.

Caracteres de escape XML

Solo hay cinco:

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

El escape de caracteres depende de dónde se usa el carácter especial.

Los ejemplos pueden validarse en Servicio de validación de marcado W3C.

Texto

La forma segura es escapar de los cinco caracteres en el texto, sin embargo, los tres caracteres ", ' y > no necesita ser escapado en el texto:

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

Atributos

La forma segura es escapar de los cinco caracteres en atributos, sin embargo, el > el carácter no necesita ser escapado en los atributos:

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

los ' carácter no necesita ser escapado en atributos si las citas son ":

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

Del mismo modo, el " no necesita ser escapado en atributos si las citas son ':

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

Comentarios

Los 5 personajes especiales no debe escaparse en los comentarios:

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

CDATA

Los 5 personajes especiales no debe escapar en CDATA secciones:

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

Instrucciones de procesamiento

Los 5 personajes especiales no debe escaparse en las instrucciones de procesamiento XML:

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

XML vs. HTML

HTML tiene su propio conjunto de códigos de escape que cubren muchos más personajes.


1153
2017-07-07 12:09



Tal vez esto ayude:

Lista de referencias de entidades de caracteres XML y HTML:

En SGML, documentos HTML y XML, el   construcciones lógicas conocidas como personaje   los datos y los valores de los atributos consisten en   secuencias de caracteres, en las que cada   personaje puede manifestarse directamente   (representándose a sí mismo), o puede ser   representado por una serie de personajes   llamada referencia de personaje, de la cual   hay dos tipos: un numérico   referencia de personaje y un personaje   referencia de la entidad Este artículo enumera   la entidad del personaje hace referencia a eso   son válidos en documentos HTML y XML.

Ese artículo enumera las siguientes cinco entidades XML predefinidas:

quot  "
amp   &
apos  '
lt    <
gt    >

87
2017-07-07 12:09



De acuerdo con las especificaciones del World Wide Web Consortium (w3C), hay 5 caracteres que no deben aparecer en su forma literal en un documento XML, excepto cuando se utilizan como delimitadores de marcado o dentro de un comentario, una instrucción de procesamiento o una sección CDATA. En todos los demás casos, estos caracteres se deben reemplazar utilizando la entidad correspondiente o la referencia numérica de acuerdo con la siguiente tabla:

Personaje originalReemplazo de entidad XMLReemplazo numérico XML
<& lt;<
>& gt;>
"& quot;"
&&amperio;&
'& apos;'

Tenga en cuenta que las entidades antes mencionadas se pueden usar también en HTML, con la excepción de & apos;, que se introdujo con XHTML 1.0 y no está declarado en HTML 4. Por esta razón, y para garantizar la retrocompatibilidad, la especificación XHTML recomienda el uso de ' en lugar.


65
2017-07-03 12:38



Los caracteres de escape son diferentes para las etiquetas y los atributos.

Para las 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 ampersand (&) y el paréntesis angular izquierdo (<) no deben   aparecen en su forma literal, excepto cuando se usan como delimitadores de marcado,   o dentro de un comentario, una instrucción de procesamiento o una sección CDATA. Si   se necesitan en otro lugar, se deben escapar utilizando cualquiera de los   referencias de caracteres o las cadenas "& amp;" y "& lt;"   respectivamente. El corchete de ángulo recto (>) se puede representar usando el   cadena "& gt;", y debe, por compatibilidad, escaparse utilizando cualquiera   "& gt;" o una referencia de personaje cuando aparece en la cadena "]]>   "en contenido, cuando esa cadena no marca el final de un CDATA   sección.

Para permitir que los valores de los atributos contengan comillas simples y dobles,   el apóstrofo o carácter de comillas simples (') puede representarse como "   & apos; ", y el carácter de comillas dobles (") como "& quot;".


44
2018-02-05 10:03



Además de los cinco caracteres comúnmente conocidos [<,>, &, ", '], también escapé del carácter de tabulación vertical (0x0B). Es válido UTF-8, pero no válido XML 1.0, e incluso muchas bibliotecas (incluidas libxml2) lo pierde y silenciosamente genera un XML inválido.


19
2018-04-25 13:38



Nueva respuesta simplificada a una vieja pregunta frecuente ...

Escapes XML simplificados

  1. Siempre  (90% importante para recordar)

    • Escapar < como &lt; a no ser que < está comenzando una <tag/>.
    • Escapar & como &amp; a no ser que & está comenzando una &entity;.
  2. Valores de atributo  (9% importante para recordar)

    • attr="  'Comillas simples' están bien dentro de las comillas dobles."
    • attr='  "Doble comillas" están bien dentro de comillas simples.'
    • Escapar " como &quot; y ' como &apos; de otra manera.
  3. Comentarios, CDATAy Instrucciones de procesamiento  (0.9% importante para recordar)

    • <!-- Dentro comentarios  --> nada tiene que ser escapado pero no -- cadenas están permitidas
    • <![CDATA[ Dentro CDATA  ]]> nada tiene que ser escapado, pero no ]]> cadenas están permitidas
    • <?PITarget Dentro PI  ?> nada tiene que ser escapado, pero no ?> cadenas están permitidas
  4. Esoterica  (0.1% importante para recordar)

    • Escapar ]]> como ]]&gt; a no ser que ]]> está terminando una sección CDATA.
      (Esta regla se aplica a los datos de caracteres en general, incluso fuera de una sección de CDATA).

9
2017-10-09 01:54



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

Hay cinco entidades predefinidas:

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

"Todos los caracteres Unicode permitidos se pueden representar con una referencia numérica de caracteres". Por ejemplo:

&#20013;

La mayoría de los caracteres de control y otros rangos Unicode están específicamente excluidos, lo que significa (creo) que no pueden ocurrir ni escapados ni directos:

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


4
2017-08-15 07:53



Depende del contexto. Para el contenido, es <y &, y]]> (aunque una cadena de 3 en lugar de una char). Para valores de atributo, es <y & y "y". Para CDATA, es]]>.


3
2018-06-04 14:36