Question De quels caractères ai-je besoin pour m'échapper dans des documents XML?


Quels caractères doivent être échappés dans les documents XML, ou où pourrais-je trouver une telle liste?


783
2017-07-07 12:07


origine


Réponses:


Si vous utilisez une classe ou une bibliothèque appropriée, ils feront l'échappement pour vous. De nombreux problèmes XML sont causés par la concaténation de chaînes.

Caractères d'échappement XML

Il n'y a que cinq:

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

L'échappement des caractères dépend de l'endroit où le caractère spécial est utilisé.

Les exemples peuvent être validés à Service de validation de balisage W3C.

Texte

Le moyen sûr est d'échapper à tous les cinq caractères dans le texte, cependant, les trois caractères ", ' et > ne doit pas être échappé dans le texte:

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

Les attributs

Le moyen sûr est d'échapper à tous les cinq caractères dans les attributs, cependant, le > le caractère n'a pas besoin d'être échappé dans les attributs:

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

le ' caractère ne doit pas être échappé dans les attributs si les citations sont ":

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

De même, le " ne doit pas être échappé dans les attributs si les citations sont ':

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

commentaires

Tous les 5 caractères spéciaux ne doit pas être échappé dans les commentaires:

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

CDATA

Tous les 5 caractères spéciaux ne doit pas être échappé à CDATA sections:

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

Instructions de traitement

Tous les 5 caractères spéciaux ne doit pas être échappé dans les instructions de traitement XML:

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

XML par rapport à HTML

Le HTML a son propre ensemble de codes d'échappement qui couvrent beaucoup plus de caractères.


1153
2017-07-07 12:09



Peut-être que cela aidera:

Liste des références d'entités de caractères XML et HTML:

Dans les documents SGML, HTML et XML, le   constructions logiques connues sous le nom de caractère   les données et les valeurs d'attribut consistent en   séquences de caractères, dans lesquelles   le caractère peut se manifester directement   (se représentant lui-même), ou peut être   représenté par une série de caractères   appelé une référence de caractère, dont   il y a deux types: un numérique   référence de personnage et un personnage   référence d'entité. Cet article répertorie   l'entité de caractère fait référence à   sont valables dans les documents HTML et XML.

Cet article répertorie les cinq entités XML prédéfinies suivantes:

quot  "
amp   &
apos  '
lt    <
gt    >

87
2017-07-07 12:09



Selon les spécifications du World Wide Web Consortium (W3C), il y a 5 caractères qui ne doivent pas apparaître dans leur forme littérale dans un document XML, sauf lorsqu'il est utilisé comme délimiteur de balisage ou dans un commentaire, une instruction de traitement ou une section CDATA. Dans tous les autres cas, ces caractères doivent être remplacés en utilisant l'entité correspondante ou la référence numérique selon le tableau suivant:

Caractère originalRemplacement d'une entité XMLRemplacement numérique XML
<& lt;<
>& gt;>
"& quot;"
&& amp;&
'& apos;'

Notez que les entités susmentionnées peuvent également être utilisées en HTML, à l'exception de & apos;, qui a été introduit avec XHTML 1.0 et n'est pas déclaré en HTML 4. Pour cette raison, et pour assurer la rétrocompatibilité, la spécification XHTML recommande l'utilisation de ' au lieu.


65
2017-07-03 12:38



Les caractères d'échappement sont différents pour les balises et les attributs.

Pour les tags:

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

Pour les attributs:

" &quot;
' &apos;

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

Le caractère d'esperluette (&) et l'angle gauche (<) ne doivent pas   apparaissent dans leur forme littérale, sauf lorsqu'ils sont utilisés comme délimiteurs de balisage,   ou dans un commentaire, une instruction de traitement ou une section CDATA. Si   ils sont nécessaires ailleurs, ils doivent être échappés en utilisant soit numérique   les références de caractères ou les chaînes "& amp;" et "& lt;"   respectivement. L'équerre droite (>) peut être représentée en utilisant   chaîne "& gt;", et doit, pour la compatibilité, être échappé en utilisant soit   "& gt;" ou une référence de caractère lorsqu'elle apparaît dans la chaîne "]]>   "dans le contenu, quand cette chaîne ne marque pas la fin d'un CDATA   section.

Pour autoriser les valeurs d'attribut à contenir des guillemets simples et doubles,   l'apostrophe ou le guillemet simple (') peut être représenté par "   & apos; ", et le guillemet double (") as "& quot;"


44
2018-02-05 10:03



en plus des cinq caractères communément connus [<,>, &, ", '] j'échapperais aussi au caractère de tabulation vertical (0x0B) .Il est valide UTF-8, mais pas valide XML 1.0, et même beaucoup de bibliothèques (y compris libxml2) le manque et produit silencieusement le XML invalide.


19
2018-04-25 13:38



Nouvelle réponse simplifiée à une vieille question fréquemment posée ...

Échappement XML simplifié

  1. Toujours  (90% important à retenir)

    • Échapper < comme &lt; sauf si < commence un <tag/>.
    • Échapper & comme &amp; sauf si & commence un &entity;.
  2. Valeurs d'attribut  (9% important à retenir)

    • attr="  'Guillemets simples' sont ok entre guillemets."
    • attr='  "Double citation" sont ok dans les guillemets simples.'
    • Échapper " comme &quot; et ' comme &apos; autrement.
  3. commentaires, CDATA, et Instructions de traitement  (0,9% important à retenir)

    • <!-- Dans commentaires  --> rien ne doit être échappé mais pas -- les chaînes sont autorisées.
    • <![CDATA[ Dans CDATA  ]]> rien ne doit être échappé, mais pas ]]> les chaînes sont autorisées.
    • <?PITarget Dans PI  ?> rien ne doit être échappé, mais pas ?> les chaînes sont autorisées.
  4. Esotérique  (0,1% important à retenir)

    • Échapper ]]> comme ]]&gt; sauf si ]]> termine une section CDATA.
      (Cette règle s'applique aux données de caractères en général - même en dehors d'une section CDATA.)

9
2017-10-09 01:54



Abrégé de: http://en.wikipedia.org/wiki/XML#Escaping

Il y a cinq entités prédéfinies:

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

"Tous les caractères Unicode autorisés peuvent être représentés avec une référence de caractère numérique." Par exemple:

&#20013;

La plupart des caractères de contrôle et d'autres gammes Unicode sont spécifiquement exclus, ce qui signifie (je pense) qu'ils ne peuvent pas être échappés ou directs:

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


4
2017-08-15 07:53



Ça dépend du contexte. Pour le contenu, il est <et &, et]]> (bien que chaîne de 3 au lieu d'un caractère). Pour les valeurs d'attributs, il s'agit de <et & et "et '. Pour CDATA, c'est]]>.


3
2018-06-04 14:36



Seulement <et & doivent être échappés si les données de caractères doivent être traitées et non balisées:

http://www.w3.org/TR/xml11/#syntax


-3
2018-04-02 14:17