How to prevent XDocument from adding XML version and encoding information

11,349

That's the behaviour of the XDocument.Save method when serializing to a file or a TextWriter. If you want to omit the XML declaration, you can either use XmlWriter (as shown below) or call ToString. Refer to Serializing with an XML Declaration.

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);
Share:
11,349

Related videos on Youtube

Ein Doofus
Author by

Ein Doofus

Updated on July 14, 2022

Comments

  • Ein Doofus
    Ein Doofus almost 2 years

    Despite using the SaveOptions.DisableFormatting option in the following code:

    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);
    

    the target XML file gets this added to it:

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

    Is there a way to preserve the original formatting and not have the version and encoding information added?

    • John Saunders
      John Saunders almost 11 years
      That's not formatting. It's part of the document. What problem causes you to want that removed?