Как опустить объявления xml при использовании XElement.Save? - PullRequest
4 голосов
/ 26 февраля 2011

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

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

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

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

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

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

Ответы [ 3 ]

5 голосов
/ 26 февраля 2011

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

2 голосов
/ 26 февраля 2011

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

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

1 голос
/ 15 октября 2015

Этот пример записывает пример 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);
...