web-dev-qa-db-fra.com

Échapper au caractère de guillemet double en XML

Existe-t-il un caractère d'échappement pour une double citation au format xml? Je veux écrire un tag comme:

<parameter name="Quote = " ">

mais si je mets ", alors cela signifie que la chaîne est terminée. J'ai besoin de quelque chose comme ça (c ++):

printf("Quote = \" ");

Y a-t-il un personnage à écrire avant la double citation pour y échapper?

89
ufukgun

Essaye ça:

&quot;
149
Andrew Hare

Voici les caractères communs qui doivent être échappés en XML, en commençant par les guillemets doubles:

  1. double citation (") sont échappés à &quot;
  2. esperluette (&) est échappé à &amp;
  3. guillemets simples (') sont échappés à &apos;
  4. moins que (<) est échappé à &lt;
  5. plus grand que (>) est échappé à &gt;
109
Alex Muriithi

D'autres ont répondu à la question de savoir comment gérer l'échappement spécifique dans ce cas.

Une réponse plus large consiste à ne pas essayer de le faire vous-même. Utilisez une API XML - il y en a beaucoup pour presque toutes les plateformes de programmation modernes existantes.

Les API XML gèreront automatiquement ce genre de choses, ce qui rendra beaucoup plus difficile l’erreur. Sauf si vous écrivez vous-même une API XML, vous devriez rarement vous soucier de ces détails.

27
Jon Skeet

Nouvelle réponse améliorée à une ancienne question fréquemment posée ...

Quand échapper à la double citation en XML

Double citation (") peut apparaître sans s'échapper :

  • En contenu textuel XML:

    <NoEscapeNeeded>He said, "Don't quote me."</NoEscapeNeeded>
    
  • Dans les attributs XML délimités par des guillemets simples ('):

    <NoEscapeNeeded name='Pete "Maverick" Mitchell'/>
    

    Note: passage aux guillemets simples (') ne nécessite également aucune évasion:

    <NoEscapeNeeded name="Pete 'Maverick' Mitchell"/>
    

Double citation (") doit être échappé :

  • Dans les attributs XML délimités par des guillemets:

    <EscapeNeeded name="Pete &quot;Maverick&quot; Mitchell"/>
    

Résultat final

Double citation (") doit être échappé comme &quot; en XML uniquement dans des contextes très limités.

8
kjhughes

Non, il n'y a pas de caractère d'échappement proprement dit, mais vous pouvez utiliser &quot; ou même <![CDATA["]]> pour représenter le " personnage.

7
Matt Howells

Si vous avez juste besoin d'essayer quelque chose rapidement, voici une solution rapide et sale. Utilisez guillemets simples pour la valeur d'attribut :

<parameter name='Quote = " '>
4
Brad Cupit

En C++, vous pouvez utiliser l'API EscapeXML ATL. C'est la bonne façon de gérer les caractères spéciaux ...

2
Neven

Vous pouvez essayer d’utiliser une barre oblique inversée suivie d’un "u" puis de la valeur unicode du caractère. Par exemple, la valeur unicode du guillemet double est

"-> U + 0022

Par conséquent, si vous le définissez comme faisant partie du texte XML dans Android, cela ressemblerait à ceci:

<TextView
     Android:layout_width="match_parent"
     Android:layout_height="match_parent"
     Android:text=" \u0022 Showing double quotes \u0022 "/>

Cela produirait un texte dans TextView à peu près comme ceci

"Afficher les guillemets doubles"

Vous pouvez trouver le code Unicode de la plupart des symboles et des caractères ici www.unicode-table.com/fr

1
E-max