Convertir un caractère spécial en string pour l'insérer dans un fichier

tinwul 4 Messages postés vendredi 21 mars 2008Date d'inscription 27 juillet 2011 Dernière intervention - 3 juil. 2009 à 11:18 - Dernière réponse : krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention
- 3 juil. 2009 à 16:31
Bonjour à tous,

Je cherche sans trouver une solution à mon problème. Je débute en CSharp et j'ai un petit souci :

J'ouvre un fichier xml pour le modifier, seulement la chaine de caractère que je dois entrer contient un signe '>' :

clause.InnerText = " id > max";

Dans le fichier xml j'obtiens :

<clause>id &gt; max</clause>

A savoir que le fichier xml est encodé en ANSI si cela a un rapport.
Par ailleurs, pour ouvrir le fichier xml, j'utilise XmlDocument et sa fonction Load et non pas un Dataset.

Comment faire pour obtenir   <clause>id > max</clause>   ?

Merci d'avance
Afficher la suite 

4 réponses

Répondre au sujet
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 3 juil. 2009 à 12:50
0
Utile
Salut

<clause>id > max</clause> est tout bonnement un XML non valide, et heureusement que tu ne peux pas écrire ce genre de choses avec des classes XML. < et > sont des caractères spéciaux en XML pour définir les balises. Si tu cherches à les insérer dans un fichier xml et tant que valeur, il faut forcément utiliser &lt; et &gt;.
Mais si tu relis ton XML via C#, que tu récupères la valeur de "clause", il t'indiquera "id > max", bien qu'il y ait marqué "id &gt; max" dans la source de ton XML.

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
Commenter la réponse de krimog
tinwul 4 Messages postés vendredi 21 mars 2008Date d'inscription 27 juillet 2011 Dernière intervention - 3 juil. 2009 à 13:58
0
Utile
Oui, en fait j'ai choisi un mauvais exemple en voulant faire trop simple.
Ma syntaxe attendue est en fait :

<Clause>![CDATA[id > max]]</Clause>

Et celle-ci est valide.

Donc mon souci est de pouvoir écrire ce type de syntaxe dans un fichier xml avec CSharp.

Je pense que c'est un problème d'encodage.
J'ai entendu parler de System.Text.ASCIIEncoding comme solution. Si quelqu'un pouvait m'en dire un peu plus...
Commenter la réponse de tinwul
tinwul 4 Messages postés vendredi 21 mars 2008Date d'inscription 27 juillet 2011 Dernière intervention - 3 juil. 2009 à 15:33
0
Utile
Bon je n'ai toujours pas trouvé donc ce problème de conversion n'est pas résolu mais je l'ai contourné : en fait ![CDATA[ ]] sert justement à rendre valide un xml qui comme Krimog l'a dit, ne l'est pas.

Donc j'ai juste enlevé ce CDATA et laissé > dans mon fichier xml puisque celui-ci l'interprète bien comme le signe > au moment de son utilisation.

Voilà, merci bien Krimog de m'avoir répondu :)
Commenter la réponse de tinwul
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 3 juil. 2009 à 16:31
0
Utile
Si tu utilises le namespace System.Xml, tu peux probablement utiliser monXmlDocument.CreateCDataSection(string data);

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
Commenter la réponse de krimog

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.