Как опустить объявления xml при использовании XElement.Save?

XElement.Save на самом деле делает то, что мне нужно, но он начинает файл с:

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

Есть ли способ предотвратить это?

Должен ли я сохранить, используя другие типы, методы после того, как я закончу создание моего XElement?

Или я должен пропустить эту строку через XmlReader.Read? Поскольку при этом я чувствую, что это более хрупко, поскольку я предполагаю, что первая строка всегда будет этим объявлением xml.

Каков самый простой способ сделать это?


person Joan Venge    schedule 25.02.2011    source источник
comment
почему ты хочешь оставить это?   -  person John Saunders    schedule 26.02.2011
comment
Спасибо, Джон, теперь мне это не нужно, я думаю, потому что ваш способ чтения xml сработал. В противном случае я получал ошибку с моим методом, опубликованным в другом вопросе.   -  person Joan Venge    schedule 26.02.2011


Ответы (3)


XElement.ToString() не будет добавлять XML-декларацию к выходным данным. Но я не понимаю, почему XmlReader или любой другой анализатор XML могут иметь проблемы со стандартным объявлением XML.

person Joel Mueller    schedule 25.02.2011
comment
Спасибо, когда я использовал ридер, он выдает исключение: неверный корень данных, строка 1 и т. д. - person Joan Venge; 26.02.2011
comment
Я видел очень похожую ошибку, вызванную меткой порядка байтов в начале файла. Возможно, стоит провести расследование. - person Jon; 13.01.2012

В этом примере данные примера xmlTree записываются в текстовый файл data.xml без строки объявления, но включают форматирование отступов :

XElement xmlTree = new XElement("Root",
  new XAttribute("Attribute1", 1),
  new XElement("Child1", 1),
  new XElement("Child2", 2)
);
using (var writer = XmlWriter.Create("data.xml", new XmlWriterSettings { OmitXmlDeclaration = true, Indent = true }))
  xmlTree.Save(writer);
person dapi    schedule 15.10.2015

Использование XmlWriter даст вам эту возможность.

В статье Microsoft: Сериализация с XML-декларацией описывается, как контролировать, генерирует ли сериализация XML-декларация.

person John Arlen    schedule 25.02.2011