GPX
GPX

Reputation: 3645

XmlWriter messing formatting when saving XML

I'm trying to read an existing XML file, modify the InnerText and Attribute values for a bunch of nodes, and then save changes back to the file.

I'm using the below code. When the XML file is saved, it messes up the formatting. For example, line breaks between some nodes disappear. How do I preserve (or re-format as well formatted & indented) the XML file?

XmlDocument xDoc = new XmlDocument();
using (XmlReader xRead = XmlReader.Create(strXMLFilename))
{
    xDoc.Load(xRead);
}
//Makes changes to a few nodes
XmlWriterSettings xwrSettings = new XmlWriterSettings();
xwrSettings.IndentChars = "\t";
xwrSettings.NewLineHandling = NewLineHandling.Entitize;
xwrSettings.Indent = true;
xwrSettings.NewLineChars = "\n";
using (XmlWriter xWrite = XmlWriter.Create(strXMLFilename, xwrSettings))
{
    xDoc.Save(xWrite);
}

Upvotes: 2

Views: 3334

Answers (1)

GPX
GPX

Reputation: 3645

Okay, so the XmlDocument object, by default, ignores whitespace. I had to force it to preserve whitespace like this —

xDoc.PreserveWhitespace = true;

and BAM! Problem solved!

Upvotes: 4

Related Questions