Добавьте XDeclaration в XDocument после его создания - PullRequest
4 голосов
/ 27 июня 2011

У меня есть XmlSerializer, который я использую для сериализации объекта в XDocument.

var doc = new XDocument();
using (var writer = doc.CreateWriter())
{
   xmlSerializer.Serialize(writer, object);
}

После этого я хочу добавить XDeclaration:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

Я создаю этот XDeclaration, как описано ниже:

var decl = new XDeclaration("1.0", "UTF-8", "no");

Однако, когда я пытаюсь добавить это XDeclartion в мой XDocument, я получаю следующую ошибку:

System.ArgumentException : Non white space characters cannot be added to content.

Я некоторое время искал в Google, но все, что я нашел, - это добавление XDeclaration в конструктор XDocument, что в моем случае (при заполнении его XmlWriter) недопустимо.

1 Ответ

6 голосов
/ 27 июня 2011

Использовать свойство XDocument.Declaration


EDIT

Пример кода:

var xmlSerializer = new XmlSerializer(typeof(int));

var doc = new XDocument();

var decl = new XDeclaration("1.0", "utf-8", "no");
doc.Declaration = decl;

using (var writer = doc.CreateWriter())
{
    xmlSerializer.Serialize(writer, 1);
}
doc.Save(File.Create("x.xml"));

Этот код выдает следующий вывод:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<int>1</int>
...