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.
12 réponses
lorsque votre XML contient &
, Cela donnera le texte &
.
quand vous utilisez cela en HTML, cela sera rendu comme &
.
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.
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 &
.
tags CDATA?
<![CDATA[
This is some text with ampersands & other funny characters. >>
]]>
&
devrait fonctionner très bien, Wikipedia a une liste d'entités prédéfinies en XML .
dans mon cas, j'ai dû le changer en %26
.
j'avais besoin d'échapper à &
dans une URL. Donc &
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.
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.
&
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 &
) et puis utilisez cela pour créer du HTML correctement encodé (ce qui implique à nouveau de changer &
en &
). Il en résulte:
&amp;
pour un explication de l'encodage XML, voir:
de quels caractères ai-je besoin pour m'échapper dans les documents XML?
<xsl:text disable-output-escaping="yes">& </xsl:text>
fera l'affaire.
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.
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.
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 <>
en remplacement du.
<Employees Id="1" Name="ABC">
<Query>
SELECT * FROM EMP WHERE ID=1 AND RES <> 'GCF'
<Query>
</Employees>
Cliquez ici pour voir tous les codes.