Convertir un caractère spécial en string pour l'insérer dans un fichier
tinwul
Messages postés4Date d'inscriptionvendredi 21 mars 2008StatutMembreDernière intervention27 juillet 2011
-
3 juil. 2009 à 11:18
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 2015
-
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 > 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> ?
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 3 juil. 2009 à 12:50
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 < et >.
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 > max" dans la source de ton XML.
Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
tinwul
Messages postés4Date d'inscriptionvendredi 21 mars 2008StatutMembreDernière intervention27 juillet 2011 3 juil. 2009 à 13:58
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...
tinwul
Messages postés4Date d'inscriptionvendredi 21 mars 2008StatutMembreDernière intervention27 juillet 2011 3 juil. 2009 à 15:33
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.