Scott on Writing

Musings on technical writing...

Outputting XML in a Visually Pleasing Manner

Another XML challenge: given an XML string, like:

<book><title>1984</title><author>Orwell</author></book>

What's the easiest way to display the XML in a friendly, indented way, like:

<book>
  <title>
    1984
  </title>
  <author>
    Orwell
  </author>
</book>

Here is my approach, let me know if you know of one better. Essentially, what I do is the following:

  1. Populate an XmlDocument with the XML data.
  2. Create an XmlTextWriter instance that writes to a StringWriter and set its Formatting property to Formatting.Indented
  3. Save the XmlDocument's data to the XmlTextWriter via the Save() method
  4. Get the prettily formatted XML by calling the StringWriter's ToString() method.

Is there a more efficient way? It seems rather unfortunate to have to load the entire XML in an XmlDocument instance first. I guess one could use an XmlTextReader to read through each node, and then write it to the XmlTextWriter, but I don't see a method that does this for me automatically. Anywho, here's the code I use:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml);

StringWriter sw = new StringWriter();
XmlTextWriter writer = new XmlTextWriter(sw);
writer.Formatting = Formatting.Indented;

xmlDoc.Save(writer);
Console.WriteLine(sw.ToString());

posted on Thursday, October 16, 2003 2:11 PM

Feedback

# re: Outputting XML in a Visually Pleasing Manner 8/11/2004 2:13 PM Jake

THANKS!!!! Good code ! I wanted this to "pretty up" xml displayed in a textarea.

# re: Outputting XML in a Visually Pleasing Manner 8/12/2004 10:07 AM Jake

Hey dude, just found out this way to also output "pretty" xml:

dsAuthors is a dataset containing the XML

System.IO.StringWriter swXML = new System.IO.StringWriter();
dsAuthors.WriteXmlSchema(swXML);
textBox1.Text = swXML.ToString();

For the full code:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbwlkWalkthroughAccessingXMLData.asp

Title:  
Name:  
Url:
Protected by Clearscreen.SharpHIPEnter the code you see:
Comments   

My Links

Ads Via DevMavens

Archives

Post Categories

 

I am a Microsoft MVP for ASP.NET.
I am an ASPInsider.
<March 2010>
SMTWTFS
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910

Comment Stats

DayTotal% of Total
Sunday 2056.8%
Monday 42514.1%
Tuesday 51917.2%
Wednesday 55518.4%
Thursday 58019.2%
Friday 54718.1%
Saturday 1886.2%
Total 3019100.0%

Hour1Total% of Total
12:00 AM 782.6%
1:00 AM 812.7%
2:00 AM 682.3%
3:00 AM 822.7%
4:00 AM 692.3%
5:00 AM 1264.2%
6:00 AM 1183.9%
7:00 AM 1816.0%
8:00 AM 1926.4%
9:00 AM 1585.2%
10:00 AM 1886.2%
11:00 AM 1936.4%
12:00 PM 2016.7%
1:00 PM 1846.1%
2:00 PM 1695.6%
3:00 PM 1354.5%
4:00 PM 1153.8%
5:00 PM 1073.5%
6:00 PM 1013.3%
7:00 PM 1073.5%
8:00 PM 923.0%
9:00 PM 882.9%
10:00 PM 913.0%
11:00 PM 953.1%
Total 3019100.0%

Comments by Blog Entry Date/Time

Day Entry MadeAvg.Total
Sunday 4.97159
Monday 4.80384
Tuesday 4.04477
Wednesday 7.39680
Thursday 6.26676
Friday 5.07466
Saturday 4.78177
Total 5.403019

Hour1 Entry MadeAvg.Total
12:00 AM 5.2937
1:00 AM 1.002
5:00 AM 0.000
7:00 AM 3.8550
8:00 AM 3.72134
9:00 AM 6.06297
10:00 AM 5.63276
11:00 AM 4.22194
12:00 PM 6.16351
1:00 PM 3.09133
2:00 PM 4.89230
3:00 PM 7.64321
4:00 PM 4.00108
5:00 PM 6.07170
6:00 PM 4.64116
7:00 PM 8.95188
8:00 PM 8.63164
9:00 PM 5.00115
10:00 PM 6.31101
11:00 PM 4.5732
Total 5.403019

Learn More About Comment Stats
1 - All times GMT -8...


Blog Stats

Favorite Web Sites

My Books

My MSDN Articles