Speichern einer linq in XML-Datei als ANSI anstelle von UTF-8 in C# (Ivy)
-
20-09-2019 - |
Frage
In C#muss ich XML -Dateien zur Verwendung mit Ivy und Nant erstellen, habe aber Schwierigkeiten, die richtige Codierung in der Ausgabedatei zu erhalten.
Wenn ich Xelements .Save ("C: foo.xml") verwende, bekomme ich das richtige aussehen Datei, aber Ivy und/oder Nant sind verärgert, da die Datei tatsächlich mit UTF-8 gespeichert wird, aber ich muss sie tatsächlich als ANSI speichern, um sie zu verwenden.
Ich habe derzeit eine Bodge an Ort und Stelle, die .ToString () verwenden soll, um den Text zu erhalten und dann einen Streamwriter zu verwenden, um ihn in eine Datei zu schreiben.
Idealerweise möchte ich das Format während der .Save () festlegen, kann aber keine Informationen dazu finden.
Vielen Dank.
Lösung
XDocument.save hat eine Reihe von Überladungen.
Das Schreiben über einen ordnungsgemäß konstruierten XMLWriter ermöglicht es uns, die ASCII -Codierung auszuwählen.
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 );
}