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






4.14/5 (4 votes)
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> <Name>user1</Name> </User> <User> <Name>user2</Name> </User> <User> <Name>user3</Name> </User> </Users>