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

Signaler
Messages postés
4
Date d'inscription
vendredi 21 mars 2008
Statut
Membre
Dernière intervention
27 juillet 2011
-
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
-
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

4 réponses

Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
43
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 ! -
Messages postés
4
Date d'inscription
vendredi 21 mars 2008
Statut
Membre
Dernière intervention
27 juillet 2011

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...
Messages postés
4
Date d'inscription
vendredi 21 mars 2008
Statut
Membre
Dernière intervention
27 juillet 2011

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 :)
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
43
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 ! -