Saltar al contenido

XDocument: guardar XML en un archivo sin BOM

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)

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *