Di quali caratteri ho bisogno per scappare nei documenti XML?

Quali caratteri devono essere sfuggiti nei documenti XML, o dove potrei trovare una tale lista?

Se usi una class o una libreria appropriata, faranno la fuga per te. Molti problemi XML sono causati dalla concatenazione di stringhe.

Caratteri di escape XML

Ce ne sono solo cinque:

 " " ' ' < < > > & & 

L’escape dei caratteri dipende da dove viene utilizzato il carattere speciale.

Gli esempi possono essere convalidati presso W3C Markup Validation Service .

Testo

Il modo sicuro è di sfuggire a tutti e cinque i caratteri nel testo, tuttavia, i tre caratteri " , ' e > non devono essere sfuggiti nel testo:

  "'> 

attributi

Il modo sicuro è di sfuggire a tutti e cinque i caratteri negli attributi, tuttavia, il > carattere non deve essere scappato negli attributi:

   

Il carattere non deve essere sfuggito negli attributi se le virgolette sono " :

   

Allo stesso modo, " non è necessario essere sfuggiti negli attributi se le virgolette sono ' :

   

Commenti

Tutti i 5 caratteri speciali non devono essere sfuggiti nei commenti:

     

CDATA

Tutti e 5 i caratteri speciali non devono essere sfuggiti nelle sezioni CDATA :

   &]]>  

Istruzioni di elaborazione

Tutti e 5 i caratteri speciali non devono essere sfuggiti nelle istruzioni di elaborazione XML:

   ?>  

XML contro HTML

HTML ha il proprio set di codici di escape che coprono molti più caratteri.

Forse questo aiuterà:

Elenco di riferimenti di quadro carattere XML e HTML :

Nei documenti SGML, HTML e XML, i costrutti logici noti come dati di carattere e valori di attributo consistono in sequenze di caratteri, in cui ogni personaggio può manifestarsi direttamente (rappresentandosi), o può essere rappresentato da una serie di caratteri chiamati riferimenti di carattere, di cui esistono due tipi: un riferimento numerico al carattere e un riferimento all’ quadro carattere. In questo articolo sono elencati i riferimenti di quadro carattere validi nei documenti HTML e XML.

Quell’articolo elenca le seguenti cinque quadro XML predefinite:

 quot " amp & apos ' lt < gt > 

Secondo le specifiche del World Wide Web Consortium (w3C), ci sono 5 caratteri che non devono apparire nella loro forma letterale in un documento XML , tranne quando usati come delimitatori di markup o all’interno di un commento, un’istruzione di elaborazione o una sezione CDATA . In tutti gli altri casi, questi caratteri devono essere sostituiti utilizzando l’ quadro corrispondente o il riferimento numerico in base alla seguente tabella:

Sostituzione dell' quadro XML del carattere originale Sostituzione numerica XML
< & lt; & # 60;
> & gt; & # 62;
" & quot; & # 34;
& & amp; & # 38;
' & apos; & # 39;

Si noti che le quadro di cui sopra possono essere utilizzate anche in HTML, con l'eccezione di & apos; , che è stato introdotto con XHTML 1.0 e non è dichiarato in HTML 4. Per questo motivo, e per garantire la retro-compatibilità, la specifica XHTML raccomanda l'uso di & # 39; anziché.

I caratteri di escape sono diversi per tag e attributi.

Per i tag:

  < < > > (only for compatibility, read below) & & 

Per attributi:

 " " ' ' 

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

Il carattere e commerciale (&) e la parentesi angular sinistra (<) non devono apparire nella loro forma letterale, tranne quando vengono usati come delimitatori di markup, o all'interno di un commento, un'istruzione di elaborazione o una sezione CDATA. Se sono necessari altrove, devono essere sottoposti a escape utilizzando rispettivamente i riferimenti numerici dei caratteri o le stringhe "& amp;" e "& lt;". La parentesi angolare destra (>) può essere rappresentata usando la stringa “& gt;” e, per compatibilità, deve essere preceduta da “& gt;” o da un riferimento di carattere quando appare nella stringa “]]>” nel contenuto, quando quella stringa non segna la fine di una sezione CDATA.

Per consentire ai valori di attributo di contenere virgolette singole e doppie, l’apostrofo o il carattere a virgoletta singola (‘) possono essere rappresentati come “& apos;” e il carattere a virgolette (“) come” & quot; “.

oltre ai ben noti cinque caratteri [<,>, &, “, ‘] vorrei anche sfuggire al carattere di tabulazione verticale (0x0B). È valido UTF-8, ma non è valido XML 1.0 e anche molte librerie (incluso libxml2) lo manca e genera un XML non valido.

Nuova, risposta semplificata a una vecchia domanda frequente …

Escaping XML semplificato

  1. Sempre (il 90% importante da ricordare)

    • Escape < as < a meno che < stia iniziando un .
    • Escape & as & a meno che & non stia iniziando &entity; .
  2. Valori attributo (9% importante da ricordare)

    • attr=" Le virgolette singole vanno bene tra virgolette doppie " .
    • attr=' " Le virgolette " vanno bene tra virgolette singole. '
    • Esci " come " e ' come altrimenti.
  3. Commenti , CDATA e istruzioni di elaborazione (0,9% importante da ricordare)

    • non è necessario sfuggire a nessun elemento, ma non è consentito utilizzare stringhe.
    • Entro CDATA ]]> non è necessario sfuggire a nessun elemento, ma non sono consentite le stringhe ]]> .
    • Within PI ?> Niente deve essere sfuggito, ma no ?> stringhe sono permesse.
  4. Esoterica (0.1% importante da ricordare)

    • Escape ]]> as ]]> a meno che ]]> stia terminando una sezione CDATA.
      (Questa regola si applica ai dati di carattere in generale, anche al di fuori di una sezione CDATA.)

Scaricato da: http://en.wikipedia.org/wiki/XML#Escaping

Esistono cinque quadro predefinite:

 < represents "<" > represents ">" & represents "&" ' represents ' " represents " 

“Tutti i caratteri Unicode consentiti possono essere rappresentati con un riferimento di carattere numerico.” Ad esempio:

  

La maggior parte dei caratteri di controllo e di altri intervalli Unicode sono specificatamente esclusi, il che significa (credo) che non possono verificarsi né escape né diretti:

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

Dipende dal contesto. Per il contenuto, è (sebbene una stringa di 3 invece di un carattere). Per i valori degli attributi, è .