Enregistrement d'un fichier Xml Linq à ANSI au lieu de UTF-8 en C # (Ivy)
-
20-09-2019 - |
Question
En C #, je dois créer des fichiers XML pour une utilisation avec Ivy et NAnt, mais ai de la difficulté à obtenir le droit de codage dans le fichier de sortie.
Si je .Save de XElement ( "C: \ foo.xml"), je reçois le bon recherche fichier, mais Ivy et / ou NAnt se fâche, que le fichier est en fait enregistré à l'aide UTF-8, mais je dois réellement enregistrer comme ANSI afin de pouvoir l'utiliser.
J'ai un Bodge en place à l'heure actuelle, ce qui est d'utiliser .ToString () pour obtenir le texte, puis utiliser un StreamWriter pour l'écrire dans un fichier.
Idéalement, je voudrais définir le format pendant la .Save () mais ne peut trouver aucune information à ce sujet.
Merci.
La solution
XDocument.Save a un certain nombre de surcharges.
L'écriture par un XmlWriter correctement construit permet de choisir le codage ASCII.
var doc = XDocument.Parse( "<foo> barṸbaz</foo>" );
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = new ASCIIEncoding();
using (var writer = XmlWriter.Create( "xelement.xml", settings )) {
doc.Save( writer );
}