Click here to Skip to main content
15,886,422 members
Articles / Programming Languages / XML
Tip/Trick

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

Rate me:
Please Sign up or sign in to vote.
4.14/5 (4 votes)
27 Sep 2010CPOL 65.5K   3   2
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, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior)
United States United States
Just another passionate software developer!

Some of the contributions to the open source world - a blog engine written in MVC 4 - sBlog.Net. Check it out here. For the codeproject article regarding sBlog.Net click here!

(Figuring out this section!)

Comments and Discussions

 
GeneralReason for my vote of 3 nice Pin
SaranRam4-Oct-10 21:34
SaranRam4-Oct-10 21:34 
GeneralReason for my vote of 5 Wow! I definitely didn't know that! Pin
Simon Dufour28-Sep-10 6:47
Simon Dufour28-Sep-10 6:47 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.