Que personagens eu preciso para escapar em documentos XML?

que caracteres devem ser escapados em documentos XML, ou onde posso encontrar tal lista?

Author: animuson, 2009-07-07

9 answers

Se você usar uma classe ou biblioteca apropriada, eles vão fazer a fuga para você. Muitas questões XML são causadas pela concatenação de string.

Caracteres de escape XML

Só há cinco:
"   "
'   '
<   &lt;
>   &gt;
&   &amp;

Os caracteres de escape dependem de onde o carácter especial é usado.

Os exemplos podem ser validados em W3C Markup Validation Service.

Texto

O caminho seguro é escapar de todos os cinco caracteres no texto, no entanto, os três caracteres ", ' e > não é preciso escapar por texto:
<?xml version="1.0"?>
<valid>"'></valid>

Atributos

A maneira segura é escapar de todos os cinco caracteres em Atributos, no entanto, o carácter > não precisa de ser escapado em atributos:

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

O carácter ' não precisa de ser escapado em atributos se as citações são ":

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

Da mesma forma, o " não precisa ser escapado em atributos se as citações são ':

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

Comentários

Todos os 5 caracteres especiais não deve ser escapado em comentários:

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

CDATA

Todos os 5 caracteres especiais não devem {[45] } ser escapados emsecções CDATA :

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

Instruções de processamento

Todos os 5 caracteres especiais não devem ser escapados em instruções de processamento XML:

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

XML vs. HTML

HTML tem o seu próprio conjunto de códigos de fuga que cobrem muito mais caracteres.

 1171
Author: Welbog, 2017-02-02 13:27:27
Talvez isto ajude.

Lista de referências da entidade de caracteres XML e HTML:

Nos documentos SGML, HTML e XML, o construções lógicas conhecidas como caracteres os dados e os valores dos atributos consistem em: sequências de caracteres, nas quais cada o carácter pode manifestar-se directamente (representando-se), ou pode ser representado por uma série de caracteres chamada referência de carácter, da qual existem dois tipos: um numérico referência do carácter e a personagem referência da entidade. Este artigo lista a entidade de carácter refere que são válidos em documentos HTML e XML.

Esse artigo lista as cinco entidades XML predefinidas seguintes:

quot  "
amp   &
apos  '
lt    <
gt    >
 88
Author: Andrew Hare, 2012-06-07 18:33:16

De acordo com as especificações do World Wide Web Consortium (w3C), Existem 5 caracteres que não devem aparecer na sua forma literal num documento XML, excepto quando usados como delimitadores de marcação ou dentro de um comentário, uma instrução de processamento ou uma secção CDATA. Em todos os outros casos, estes caracteres devem ser substituídos utilizando a entidade correspondente ou a referência numérica de acordo com a seguinte tabela:

Original PersonagemXML substituição de entidadeXML numérico de substituição

> > >
" "                               "                                    
&                              &                               &                                    
'                               '                               '                                    

Observe que as entidades acima mencionadas podem ser usadas também em HTML, com exceção de ', isso foi introduzido com XHTML 1.0 e não é declarado no HTML 4. Por esta razão, e para garantir a retroacompatibilidade, a especificação XHTML recomenda o uso de ' em vez disso.

 67
Author: Albz, 2013-07-03 12:38:30

Os caracteres de escape são diferentes para as marcas e atributos.

Para marcas:

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

Para atributos:

" &quot;
' &apos;

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

O carácter amperador ( & ) e o suporte do ângulo esquerdo ( ) pode ser representado utilizando o string">", and must, for compatibility, be escaped using either ">"ou uma referência de carácter quando aparece na cadeia"]] > "no conteúdo, quando essa cadeia não está marcando o fim de um CDATA seccao.

Para permitir que os valores dos atributos contenham tanto aspas simples como aspas duplas, o carácter apóstrofo ou de aspas (') pode ser representado como " '", e o personagem duplo-quote ( ") como"".

 45
Author: Peter Bartels, 2015-07-27 21:39:32

Além dos cinco caracteres conhecidos [, &, ", '] eu também escaparia do carácter vertical da tabulação (0x0B). Ele é válido UTF-8, mas não válido XML 1.0, e até mesmo muitas bibliotecas (incluindo libxml2) perdem e silenciosamente output XML inválido.

 19
Author: Charon ME, 2012-04-25 18:23:37

resposta nova e simplificada a uma pergunta antiga e comum...

Escapar XML simplificado

  1. Sempre (90% importante lembrar)

    • Escape {[[0]} como &lt; a menos que {[0] } esteja a começar um <tag/>.
    • escapar & como &amp; a menos que {[4] } Esteja a começar um &entity;.
  2. Valores Dos Atributos (9% é importante lembrar)

    • attr=" 'as aspas simples ' estão bem entre aspas duplas."
    • attr=' "as aspas " estão bem entre aspas simples.'
    • Escapar " como &quot; e ' como &apos; caso contrário.
  3. Comentários, CDATA, e Instruções de Processamento (0.9% importante lembre-se)

    • <!-- dentro de comentários --> nada tem de escapar, mas não são permitidas cordas.
    • <![CDATA[ dentro de CDATA ]]> nada tem de escapar, mas não são permitidas cordas.
    • <?PITarget dentro de ?> nada tem de escapar, mas não são permitidas cordas.
  4. Esoterica (0.1% importante para lembre-se)

    • Escape ]]> Como ]]&gt; a menos que ]]> esteja a terminar uma secção CDATA.
      (esta regra aplica – se aos dados de carácter em geral-mesmo fora de uma secção CDATA.)
 10
Author: kjhughes, 2018-06-03 13:34:55

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

Existem cinco entidades predefinidas:

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

" Todos os caracteres Unicode permitidos podem ser representados com uma referência numérica de caracteres. "Por exemplo:

&#20013;

A maioria dos caracteres de controlo e outros intervalos unicode são especificamente excluídos, o que significa (penso) que não podem ocorrer escapados ou directos:

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

 4
Author: Tim Cooper, 2014-08-15 07:53:58
Depende do contexto. Para o conteúdo, é (embora string de 3 em vez de um char). Para os valores dos atributos, é .
 3
Author: 把友情留在无盐, 2015-06-04 14:36:52
 -3
Author: Questionless, 2014-04-02 14:17:38