C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Info: The StringWriter is used as a backing store for the XmlTextWriter. XmlTextWriter to the StringWriter instance you passed to it.
Next: We see the WriteStartDocument and WriteStateElement methods. These simply begin the XML document and then begin an element.
Note: When you pass a string to WriteStartElement, the XmlTextWriter then will know the element tag you are writing.
Foreach: Next, we see a foreach loop that enumerates the array of Tuple instances. In each iteration of the loop, we write an Employee element.
ForeachC# program that uses XmlTextWriter
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);
}
}
}
Output
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>
Finally: 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.
Finally: All Start methods must be matched by End methods such as WriteEndDocument. We returned the XML result in a string instance.