Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to prevent XDocument from adding XML version and encoding information

Tags:

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?

like image 845
Ein Doofus Avatar asked May 21 '13 23:05

Ein Doofus


1 Answers

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); 
like image 160
Douglas Avatar answered Sep 17 '22 19:09

Douglas