2010-12-09 14 views
4

J'ai une chaîne de XML avec une apostrophe qui devrait être échappée à ' et ce n'est pas le cas.Échapper à une apostrophe d'un XML de liaison de données

<city place="park's place"/> 

En HTML, je saisis la valeur.

<span datafld="place"></span> 

J'ai besoin de la valeur en place pour être "parc &apos; s lieu" et non la place de parc. Actuellement, il montre "la place du parc". J'ai passé beaucoup de temps à essayer de trouver une réponse et je n'arrive pas à en trouver une.

Cet exemple de code est mal piraté car je n'ai pas le droit d'afficher de code original.

Merci.

Modifier: Ceci est une page xhtml utilisant javascript.

+1

Vous ne nous dites rien sur la langue, la plate-forme ou les API que vous utilisez. Je ne suis même pas sûr de savoir quel est votre problème. –

+0

Pourquoi devrait-il être échappé? Cela donnerait exactement les mêmes données mais avec 5 octets supplémentaires et moins de lisibilité. – Quentin

+0

Et si vous avez un attribut 'datafld', alors vous n'avez pas XHTML. – Quentin

Répondre

2

Dans le "modèle de données" XML, toutes les valeurs sont sans échappement. Donc, si votre attribut a été spécifié comme:

place="park's place" 

ou:

place="park&apos;s place" 

ou:

place="park&#39;s place" 

lorsque vous utilisez un analyseur XML (ou DOM) vous obtiendrez « parc de endroit". (Des choses comme "innerHTML" sont une exception à cette règle générale.)

Si vous avez besoin de comparer cela à une autre chaîne qui a un niveau d'échappement différent, vous devez soit échapper la chaîne que vous obtenez du DOM, ou vous devez libérer l'autre chaîne. C'est un peu comme si vous deviez comparer une mesure en mètres à une en pieds: vous devez convertir en unité de mesure/niveau d'échappement commune.

J'irais avec l'approche sans échappement si vous le pouvez. Si ce n'est pas possible, vous devrez vous assurer que vous échapper de manière cohérente partout, ce qui peut être difficile. Notez que je vous ai montré trois manières différentes d'échapper juridiquement à cette chaîne particulière - et il y en a beaucoup d'autres.

+0

Ce que vous dites ne se passe pas de mon côté. J'ai placé la place de "park' '" dans la base de données pour former le XML et il montre toujours "park' '' s place "dans l'intervalle montré ci-dessus.De toute façon, je forme la chaîne, elle sort de la datafld tout de même sans échapper ou sans échappement. – Primetime

+0

Je parle d'utiliser DOM ou SAX ou quelque chose de similaire à lire XML (je suppose que vous utilisez le DOM, puisque vous avez mentionné que vous utilisez Javascript). L'écriture XML est une toute autre chose. Vous n'avez pas dit ce que vous utilisiez pour générer ce XHTML, mais en général, vous devriez vous préoccuper des caractères qui sont échappés dans votre XML, vous devriez plutôt utiliser des choses comme le DOM qui les décapsulera pour vous. –