C# XmlWriter

C# XmlWriter tutorial shows how to write XML data in C# with XmlWriter. XmlWriter represents a writer that provides a fast, non-cached, forward-only way to generate streams or files with XML data.

C# XmlWriter

C# XmlWriter

last modified July 5, 2023

C# XmlWriter tutorial shows how to write XML data in C# with XmlWriter.

XmlWriter

XmlWriter represents a writer that provides a fast, non-cached, forward-only way to generate streams or files with XML.

The XmlWriter is available in the System.Xml namespace.

C# XmlWriter example

The following example creates a simple C# XmlWriter.

Program.cs

using System.Xml;

var sts = new XmlWriterSettings() { Indent = true, };

using XmlWriter writer = XmlWriter.Create(“data.xml”, sts);

writer.WriteStartDocument();

writer.WriteStartElement(“value”); writer.WriteValue(6); writer.WriteEndElement();

writer.WriteEndDocument();

Console.WriteLine(“XML document created”);

We create a new XML document. It contains the XML declaration and a single XML tag.

var sts = new XmlWriterSettings() { Indent = true, };

using XmlWriter writer = XmlWriter.Create(“data.xml”, sts);

The XmlWriter is created with the Create method. We pass the name of the document and the settings to the method.

writer.WriteStartDocument();

The WriteStartDocument method starts a new document.

writer.WriteStartElement(“value”); writer.WriteValue(6); writer.WriteEndElement();

The WriteStartElement and the WriteEndElement pair is used to add a new element to the document. The WriteValue writes a single simple-typed value.

writer.WriteEndDocument();

The WriteEndDocument closes any open elements or attributes and puts the writer back in the start state.

$ dotnet run XML document created

$ cat data.xml <?xml version=“1.0” encoding=“utf-8”?> <value>6</value>

C# XmlWriter example II

The following example creates an XML file with two books.

Program.cs

using System.Xml;

var sts = new XmlWriterSettings() { Indent = true, };

using var writer = XmlWriter.Create(“books.xml”, sts);

writer.WriteStartDocument(); writer.WriteStartElement(“bookstore”);

writer.WriteStartElement(“book”); writer.WriteAttributeString(“genre”, “Science Fiction”);

writer.WriteStartElement(“title”); writer.WriteString(“Dune”); writer.WriteEndElement();

writer.WriteStartElement(“author”); writer.WriteString(“Frank Herbert”); writer.WriteEndElement();

writer.WriteStartElement(“price”); writer.WriteString(“8.99”); writer.WriteEndElement();

writer.WriteEndElement(); // end of book

writer.WriteStartElement(“book”); writer.WriteAttributeString(“genre”, “Novel”);

writer.WriteStartElement(“title”); writer.WriteString(“Old Goriot”); writer.WriteEndElement();

writer.WriteStartElement(“author”); writer.WriteString(“HonorĂ© de Balzac”); writer.WriteEndElement();

writer.WriteStartElement(“price”); writer.WriteString(“9.0”); writer.WriteEndElement();

writer.WriteEndElement(); // end of book writer.WriteEndDocument();

Console.WriteLine(“XML document created”);

In addition to XML tags, we also create attributes with WriteAttributeString.

$ dotnet run XML document created

$ cat books.xml <?xml version=“1.0” encoding=“utf-8”?> <bookstore> <book genre=“Science Fiction”> <title>Dune</title> <author>Frank Herbert</author> <price>8.99</price> </book> <book genre=“Novel”> <title>Old Goriot</title> <author>HonorĂ© de Balzac</author> <price>9.0</price> </book> </bookstore>

C# XmlWriter example III

The next example creates an XML file with products.

Program.cs

using System.Xml;

var sts = new XmlWriterSettings() { Indent = true, };

using var writer = XmlWriter.Create(“products.xml”, sts);

var products = new List<Product> { new Product(1, “Product A”, 12.2M), new Product(2, “Product B”, 11.3M), new Product(3, “Product C”, 9M), new Product(4, “Product D”, 5.6M), new Product(5, “Product E”, 11.7M) };

writer.WriteStartDocument(); writer.WriteStartElement(“products”);

foreach (var product in products) { writer.WriteStartElement(“product”);

writer.WriteStartElement("id");
writer.WriteValue(product.id);
writer.WriteEndElement();

writer.WriteStartElement("name");
writer.WriteValue(product.name);
writer.WriteEndElement();

writer.WriteStartElement("price");
writer.WriteValue(product.price);
writer.WriteEndElement();

writer.WriteEndElement();  // end product

}

writer.WriteEndElement(); writer.WriteEndDocument();

Console.WriteLine(“XML document created”);

record Product(int id, string name, decimal price);

We have a list of products created with C# record type. We go over the list and generate an XML file from the objects.

$ dotnet run XML document created $ cat products.xml <?xml version=“1.0” encoding=“utf-8”?> <products> <product> <id>1</id> <name>Product A</name> <price>12.2</price> </product> <product> <id>2</id> <name>Product B</name> <price>11.3</price> </product> <product> <id>3</id> <name>Product C</name> <price>9</price> </product> <product> <id>4</id> <name>Product D</name> <price>5.6</price> </product> <product> <id>5</id> <name>Product E</name> <price>11.7</price> </product> </products>

Source

XmlWriter class - language reference

In this article we have written XML data with XmlWriter.

Author

My name is Jan Bodnar, and I am a passionate programmer with extensive programming experience. I have been writing programming articles since 2007. To date, I have authored over 1,400 articles and 8 e-books. I possess more than ten years of experience in teaching programming.

List all C# tutorials.

ad ad