Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

C# - XML Writer Settings - Adding Line breaks/indentation

0.00/5 (No votes)
27 Sep 2010 1  
When dynamically creating XML documents, they appear just like a normal text file. This tip is to add line breaks and indentation automatically (I posted this in my blog a while ago)
I have seen that at times, we need to generate XML using code. This is in contrast to web services, wherein XML is generated by the compiler. In this post, I would like to give some pointers about creating XML files using C# - the "XmlWriter" class. Consider the following piece of code:

XmlWriter xml = XmlWriter.Create(@"c:\file.xml");


This would instantiate an XML writer and you could use various commands like xml.WriteStartElement(...), xml.WriteValue(..), xml.WriteEndElement() to construct the XML file dynamically. But there is a problem with this. A file created with such an instance of XmlWriter (XML) would look like this:

<?xml version="1.0" encoding="utf-8"?><Users><User><Name>user1</Name></User><User><Name>user2</Name></User><User><Name>user3</Name></User></Users>


But, we may expect the XML file to have some line breaks, indentation to make it readable to others. For this, we need to apply some XML writer settings using the "XmlWriterSettings" class as shown below:

XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
xmlWriterSettings.NewLineOnAttributes = true;
xmlWriterSettings.Indent = true;


Now the XmlWriter would be instantiated as:

XmlWriter xml = XmlWriter.Create(path, xmlWriterSettings);


With this, the XML generated would be indented, with line breaks as appropriate! Check out the final output after the additional settings:

<?xml version="1.0" encoding="utf-8"?>
<Users>
    <User>
  &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<Name>user1</Name>
 &nbsp;&nbsp;&nbsp;</User>
 &nbsp;&nbsp;&nbsp;<User>
  &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<Name>user2</Name>
 &nbsp;&nbsp;&nbsp;</User>
 &nbsp;&nbsp;&nbsp;<User>
  &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<Name>user3</Name>
 &nbsp;&nbsp;&nbsp;</User>
</Users>

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here