Search code examples
c#xmlindentation

XmlWriter.WriteRaw indentation


I have a similar question like XML indenting when injecting an XML string into an XmlWriter.

I also use XmlWriter.WriteRaw to output an XML fragment into an xml node. This document fragment does not follow the idention which would be nice. The answer given on the post above does not work for XML fragments. Well, I can read the fragment with the XmlReader, but WriteNode does not work with document fragments (see http://msdn.microsoft.com/en-us/library/1wd6aw1b.aspx).

Any hints on how to cheat to get proper indentation?

Thanks for any hints


Solution

  • You could build a valid Xml-Document in memory containing your xml fragment. Then read this document with the XmlReader (e.g. by using MemoryStream) and let the XmlWriter write indented xml.

    A faster approach wold be indenting the xml yourself by manipulating the string. Search for <, increase the nesting level and add the indention spaces. If you find </ or a self closing tag decrease the nesting level and append a \n

    I don't think there is a fast and nice solution to your problem, but i might be wrong...