XmlTextWriter. This type renders XML data to a string. This string remains in the memory of the C# program. We use an underlying buffer—in this case, a StringWriter instance.
This type is useful for in-memory generation of XML. Because it works iteratively, it can provide faster XML generation than other approaches.
First, this program includes the System.Xml and System.IO namespaces. These are for the XmlTextWriter and StringWriter. The program creates an array of 4 Tuple instances.
using System;
using System.IO;
using System.Xml;
class Program
{
static void Main()
{
// Create an array of four Tuples.
var array = new Tuple<int, string, string, int>[4];
array[0] = new Tuple<int, string, string, int>(1,
"David", "Smith", 10000);
array[1] = new Tuple<int, string, string, int>(3,
"Mark", "Drinkwater", 30000);
array[2] = new Tuple<int, string, string, int>(4,
"Norah", "Miller", 20000);
array[3] = new Tuple<int, string, string, int>(12,
"Cecil", "Walker", 120000);
// Use StringWriter as backing for XmlTextWriter.
using (StringWriter str = new StringWriter())
using (XmlTextWriter xml = new XmlTextWriter(str))
{
// Root.
xml.WriteStartDocument();
xml.WriteStartElement("List");
xml.WriteWhitespace("\n");
// Loop over Tuples.foreach (var element in array)
{
// Write Employee data.
xml.WriteStartElement("Employee");
xml.WriteElementString("ID", element.Item1.ToString());
xml.WriteElementString("First", element.Item2);
xml.WriteWhitespace("\n ");
xml.WriteElementString("Last", element.Item3);
xml.WriteElementString("Salary", element.Item4.ToString());
xml.WriteEndElement();
xml.WriteWhitespace("\n");
}
// End.
xml.WriteEndElement();
xml.WriteEndDocument();
// Result is a string.
string result = str.ToString();
Console.WriteLine("Length: {0}", result.Length);
Console.WriteLine("Result: {0}", result);
}
}
}Length: 441
Result: <?xml version="1.0" encoding="utf-16"?><List>
<Employee><ID>1</ID><First>David</First>
<Last>Smith</Last><Salary>10000</Salary></Employee>
<Employee><ID>3</ID><First>Mark</First>
<Last>Drinkwater</Last><Salary>30000</Salary></Employee>
<Employee><ID>4</ID><First>Norah</First>
<Last>Miller</Last><Salary>20000</Salary></Employee>
<Employee><ID>12</ID><First>Cecil</First>
<Last>Walker</Last><Salary>120000</Salary></Employee>
</List>
Example notes. You will notice there are some calls to WriteWhitespace in the code. These are present to make the output look a bit nicer.
Also We see a matching pair of WriteEnd methods. These match the WriteStartDocument and WriteEndElement methods called earlier.
Tip It is important you match all Start methods with End methods. The program will not work correctly unless you do this.
After constructing XmlTextWriter with a backing stream, you must use WriteStartDocument. All Start methods must be matched by End methods such as WriteEndDocument.
Dot Net Perls is a collection of tested code examples. Pages are continually updated to stay current, with code correctness a top priority.
Sam Allen is passionate about computer languages. In the past, his work has been recommended by Apple and Microsoft and he has studied computers at a selective university in the United States.