Escribo un contenedor para una API XML de braindead enterprise. Tengo un XDocument que necesito convertir en una cadena. Debido al hecho de que su analizador XML es tan meticuloso que ni siquiera puede manejar espacios en blanco entre los nodos XML, la declaración de documento debe ser exactamente:XDocument to string: ¿Cómo omitir la codificación en la declaración?
<?xml version="1.0"?>
Sin embargo, el método de XDocument.Save() siempre añade una codificación atribuir en esa declaración:
<?xml version="1.0" encoding="utf-16"?>
con la última hora gastado en Google y Stack buscando la mejor manera de generar la cadena XML, lo mejor que puedo hacer es:
string result = xmlStringBuilder.ToString().Replace(@"encoding=""utf-16"", string.Empty));
he tratado
xdoc.Declaration = new XDeclaration("1.0", null, null);
y que tiene éxito en el establecimiento de la declaración en el XDocument la forma que yo quiero; sin embargo, cuando llamo al método Save(), el atributo de codificación se devuelve mágicamente allí, sin importar la ruta a la que vaya (usando TextWriter, agregando XmlWriterSettings, etc.).
¿Alguien tiene una mejor manera de hacer esto, o mi código está condenado a tener un párrafo de despotricar en los comentarios sobre la horrible cadena de reemplazo?