Saving a Linq to Xml file as ANSI instead of UTF-8 in C# (Ivy)
In C#, I need to create XML files for use with Ivy and NAnt, but am having difficulty in getting the right encoding in the output file.
If I use XElement's .Save("C:\foo.xml"), I get the correct looking file, but Ivy and/or NAnt gets upset, as the file is actually saved using UTF-8 but I actually need to save it as ANSI in order to be 开发者_JAVA百科able to use it.
I have a bodge in place at present, which is to use .ToString() to get the text and then use a StreamWriter to write it to a file.
Ideally, I'd like to set the format during the .Save() but can't find any information on this.
Thanks.
XDocument.Save has a number of overloads.
Writing via a properly constructed XmlWriter allows us to choose the ASCII encoding.
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 );
}
精彩评论