2010-07-23 9 views
1

J'ai une chaîne dans la base de données qui contient des chevrons (inférieur à/supérieur à). J'ai besoin d'insérer la chaîne dans un XElement, puis de le sérialiser sur un périphérique client. Maintenant, les entités html sont évidemment codées donc les parenthèses apparaissent comme <et> et la meilleure façon est d'utiliser le HttpUtility.HtmlDecode pour décoder les entités sur le périphérique client. Mais je me demande s'il y a de toute façon à échapper à l'encodage et à envoyer ces entités telles quelles?C Sharpise XML avec des entités HTML

Répondre

0

Utilisez SecurityElement.Escape Méthode

+0

Cela le transforme toujours en & lt; et & gt; (ne le conserve pas comme < and >) – Shahid

+0

Vous devez gérer ceci sur le client. Avec < and > xml sera mal formé. –

0

Si vous définissez la propriété XElement.Value, oui, il sera codé quand il est publié en feuilleton. Mais lorsque vous le désérialisez sur le client et accédez à la propriété XElement.Value, il ne sera pas codé. Voir cet exemple rapide:

var htmlData = "<some data>"; 
XElement element = new XElement("data"); 
element.Value = htmlData; 

var xml = element.ToString(); 
var data = element.Value; 
if (data != htmlData) 
    throw new NotImplementedException("this didn't work"); 

Si vous définissez un point d'arrêt, vous verrez la variable « xml » ne contient la chaîne html codée.