Comment est-ce que j'échappe aux "ampersands" en XML pour qu'ils soient rendus en tant qu'entities en HTML?

j'ai du texte XML que je souhaite rendre dans une page HTML. Ce texte contient une ampersand, que je veux rendre dans sa représentation d'entité: & .

comment échapper à cet ampli dans le XML source? J'ai essayé & , mais c'est décodé comme le caractère ampersand réel ( & ), qui est invalide en HTML .

donc je veux l'échapper de telle manière qu'il sera rendu comme & dans la page Web qui utilise la sortie XML.

452
demandé sur Community 2009-08-25 18:11:14

12 réponses

lorsque votre XML contient & , Cela donnera le texte & .

quand vous utilisez cela en HTML, cela sera rendu comme & .

354
répondu Wim ten Brink 2016-08-30 14:43:32

selon §2.4 de la spécification XML 1.0 , vous devriez pouvoir utiliser & .

j'ai essayé & mais ce n'est pas autorisé.

Êtes-vous sûr que ce n'est pas un problème différent? XML définit explicitement ceci comme la façon d'échapper aux bracelets d'ampli.

183
répondu John Feminella 2017-10-04 03:10:02

le caractère & est lui-même un caractère d'échappement en XML de sorte que la solution est de le concaténer et un équivalent décimal Unicode pour & assurant ainsi qu'il n'y a pas d'erreurs D'analyse XML. C'est-à-dire, remplacer le caractère & par & .

111
répondu trouble 2018-06-14 13:43:13

tags CDATA?

     <![CDATA[
       This is some text with ampersands & other funny characters. >>
     ]]>
58
répondu scragar 2009-08-25 14:14:29

&amp; devrait fonctionner très bien, Wikipedia a une liste d'entités prédéfinies en XML .

39
répondu nikc.org 2009-08-25 14:14:19

dans mon cas, j'ai dû le changer en %26 .

j'avais besoin d'échapper à & dans une URL. Donc &amp; n'a pas fonctionné pour moi. Le urlencode fonction change & en %26 . De cette façon, ni XML ni le mécanisme D'URL du navigateur ne se sont plaints de L'URL.

9
répondu Serhat Akay 2017-04-08 15:29:49

j'ai essayé &, mais il ne fonctionne pas. Basé sur la réponse de Wim ten Brink j'ai essayé & et cela a fonctionné.

un de mes collègues développeurs m'a suggéré d'utiliser & et cela a fonctionné indépendamment du nombre de fois où il peut être rendu.

4
répondu mcampos 2017-04-08 15:27:41

&amp; est la façon de représenter une bande passante dans la plupart des sections D'un document XML.

si vous voulez que le XML soit affiché en HTML, vous devez d'abord créer du XML correctement encodé (ce qui implique de changer & en &amp; ) et puis utilisez cela pour créer du HTML correctement encodé (ce qui implique à nouveau de changer & en &amp; ). Il en résulte:

&amp;amp;

pour un explication de l'encodage XML, voir:

de quels caractères ai-je besoin pour m'échapper dans les documents XML?

3
répondu Riley Major 2017-05-23 12:02:49

<xsl:text disable-output-escaping="yes">&amp;&nbsp;</xsl:text> fera l'affaire.

2
répondu Rick 2011-03-02 01:58:30

et si on utilisait l'unicode \u0026 ? Fonctionne pour moi dans Mes fichiers XML android. Si des problèmes surgissent, que quelqu'un me le fasse savoir.

2
répondu Scott Biggs 2017-04-09 18:57:36

une question connexe est de savoir comment encoder le contenu D'un élément XML lorsqu'un tel contenu contient un ampli -- si le XML fait partie d'une URI soumise avec une action GET. (Laissant de côté la sagesse D'une telle API -- c'était quelque chose que j'ai eu à traiter aujourd'hui.) J'ai essayé tout ce qui est mentionné ci-dessus, et la seule chose qui a réellement fonctionné était %26amp; le %26 était nécessaire pour encoder le premier caractère dans le XML-encoding pour l'ampli. Le amp; suivant le %26 était nécessaire parce que la partie XML de L'URI était chargée dans un serveur de documents XML côté. Donc, dans ce scénario amusant, il était nécessaire d'agrafer les deux méthodologies d'encodage ensemble.

0
répondu StackOverflowUser 2016-12-21 03:23:07

considérez si votre XML ressemble à ci-dessous.

<Employees Id="1" Name="ABC">
  <Query>
    SELECT * FROM EMP WHERE ID=1 AND RES<>'GCF'
  <Query>
</Employees>

vous ne pouvez pas utiliser le <> directement car il lance une erreur. Dans ce cas, vous pouvez utiliser &#60;&#62; en remplacement du.

<Employees Id="1" Name="ABC">
  <Query>
    SELECT * FROM EMP WHERE ID=1 AND RES &#60;&#62; 'GCF'
  <Query>
</Employees>

Cliquez ici pour voir tous les codes.

0
répondu Sarath Avanavu 2017-04-08 15:30:33