using (MemoryStream ms = new MemoryStream())
{
XmlTextWriter Xwriter = new XmlTextWriter(ms, Encoding.UTF8);
Xwriter.WriteStartDocument(); //Put the XML declaration
Xwriter.Formatting = Formatting.Indented; //Format the XML document
Xwriter.WriteComment("XML sample file for ch2.2"); //Put a comment
Xwriter.WriteStartElement("po"); //This is the root element
Xwriter.WriteAttributeString("id", "PO1456");
Xwriter.WriteStartElement("address");
Xwriter.WriteAttributeString("type", "shipping");
Xwriter.WriteElementString("name", "Frits Mendels");
Xwriter.WriteElementString("street", "152 Cherry St");
Xwriter.WriteElementString("city", "San Francisco");
Xwriter.WriteElementString("state", "CA");
Xwriter.WriteElementString("zip", "94045");
Xwriter.WriteEndElement();
Xwriter.WriteStartElement("items");
Xwriter.WriteStartElement("item");
Xwriter.WriteAttributeString("quantity", "1");
Xwriter.WriteAttributeString("productCode", "R-273");
Xwriter.WriteAttributeString("description", "14.4 Volt Cordless Drill");
Xwriter.WriteAttributeString("unitCost", "189.95");
Xwriter.WriteEndElement();
Xwriter.WriteStartElement("item");
Xwriter.WriteAttributeString("quantity", "1");
Xwriter.WriteAttributeString("productCode", "1632S");
Xwriter.WriteAttributeString("description", "12 Piece Drill Bit Set");
Xwriter.WriteAttributeString("unitCost", "14.95");
Xwriter.WriteEndElement();
Xwriter.WriteEndElement();
Xwriter.WriteEndElement();
Xwriter.WriteEndDocument();
Xwriter.Flush(); //flush everything from the buffer
ms.Position = 0;
StreamReader sr = new StreamReader(ms);
return sr.ReadToEnd();
}
The output will be
Frits Mendels
152 Cherry St
San Francisco
CA
94045
We can also use StreamWriter class instead of MemoryStream, just replace this line of code
XmlTextWriter Xwriter = new XmlTextWriter(ms, Encoding.UTF8);
with
StreamWriter sw = new StreamWriter();
XmlTextWriter Xwriter = new XmlTextWriter(sw);
and remove the using of MemoryStream. Also replace this part
Xwriter.Flush();
ms.Position = 0;
StreamReader sr = new StreamReader(ms);
return sr.ReadToEnd();
with
Xwriter.Flush();
Xwriter.Close();
return sw;
Here is an example from Microsoft Technet.