Как запретить XDocument добавлять XML-версию и информацию о кодировании
Несмотря на использование опции SaveOptions.DisableFormatting в следующем коде:
XDocument xmlDoc = XDocument.Load(FileManager.SourceFile);
string element="campaign";
string attribute="id";
var items = from item in xmlDoc.Descendants(element)
select item;
foreach (XElement itemAttribute in items)
{
itemAttribute.SetAttributeValue(attribute, "it worked!");
//itemElement.SetElementValue("name", "Lord of the Rings Figures");
}
xmlDoc.Save(TargetFile, SaveOptions.DisableFormatting);
целевой XML файл добавляет к нему следующее:
<?xml version="1.0" encoding="utf-8"?>
Есть ли способ сохранить исходное форматирование и не добавлять версию и информацию о кодировке?
Ответы
Ответ 1
Это поведение метода XDocument.Save
при сериализации в файл или TextWriter
. Если вы хотите опустить объявление XML, вы можете использовать XmlWriter
(как показано ниже) или вызвать ToString
. См. Сериализация с декларацией XML.
XDocument xmlDoc = XDocument.Load(FileManager.SourceFile);
// perform your modifications on xmlDoc here
XmlWriterSettings xws = new XmlWriterSettings { OmitXmlDeclaration = true };
using (XmlWriter xw = XmlWriter.Create(targetFile, xws))
xmlDoc.Save(xw);