XDocument to string: Как опустить кодировку в объявлении?

Я пишу оболочку для безумного корпоративного XML API. У меня есть XDocument, который мне нужно превратить в строку. Из-за того, что их синтаксический анализатор XML настолько привередлив, что он не может даже обрабатывать пробелы между узлами XML, объявление документа ДОЛЖНО быть ТОЧНО:

<?xml version="1.0"?>

Однако XDocument.Метод Save () всегда добавляет атрибут кодировки в это объявление:

<?xml version="1.0" encoding="utf-16"?>

За последний час, проведенный в Google и Stack в поисках лучшего способа сгенерировать строку XML, лучшее, что я могу сделать, это:

string result = xmlStringBuilder.ToString().Replace(@"encoding=""utf-16"", string.Empty));

Я пробовал

xdoc.Declaration = new XDeclaration("1.0", null, null);

, и мне удалось установить объявление в XDocument так, как я хочу; однако, когда я вызываю метод Save (), атрибут кодирования волшебным образом возвращается туда, независимо от того, каким маршрутом я иду (с использованием TextWriter, добавлением XmlWriterSettings и т. д.).

Есть ли у кого-нибудь лучший способ сделать это, или мой код навсегда обречен на то, чтобы абзац разглагольствования в комментариях над ужасной заменой строки?

5
задан eouw0o83hf 2 November 2011 в 16:37
поделиться