Solución:
Utilice un XmlTextWriter
y pasar eso al método Save () de XDocument, de esa manera puede tener más control sobre el tipo de codificación utilizada:
var doc = new XDocument(
new XDeclaration("1.0", "utf-8", null),
new XElement("root", new XAttribute("note", "boogers"))
);
using (var writer = new XmlTextWriter(".\boogers.xml", new UTF8Encoding(false)))
{
doc.Save(writer);
}
los UTF8Encoding
el constructor de la clase tiene una sobrecarga que especifica si se debe usar o no la lista de materiales (Byte Order Mark) con un valor booleano, en su caso false
.
El resultado de este código se verificó usando Notepad ++ para inspeccionar la codificación del archivo.
En primer lugar: el proveedor de servicios DEBE manejarlo, de acuerdo con la especificación XML, que establece que BOM puede estar presente en caso de representación UTF-8.
Puede forzar a guardar su XML sin BOM de esta manera:
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = new UTF8Encoding(false); // The false means, do not emit the BOM.
using (XmlWriter w = XmlWriter.Create("my.xml", settings))
{
doc.Save(w);
}
(Buscado en Google desde aquí: http://social.msdn.microsoft.com/Forums/en/xmlandnetfx/thread/ccc08c65-01d7-43c6-adf3-1fc70fdb026a)