XmlTextReader
With XmlTextReader
we parse XML data. This type acts upon a string
containing XML markup. A while
-loop is needed to keep reading from the object.
We use the XmlTextReader
constructor and develop a custom parser for XML data. This is an efficient approach to XML parsing.
A complete XML document is stored inside a string
literal. With the StringReader
constructor, we read this string
as a StringReader
.
StringReader
to the XmlTextReader
constructor. In the while
-loop, we read nodes and proceed if we detect a start element.switch
statement. We use ReadString
to read in the next node as a string
.using System; using System.IO; using System.Xml; class Program { static void Main() { string input = @"<?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>"; using (StringReader stringReader = new StringReader(input)) using (XmlTextReader reader = new XmlTextReader(stringReader)) { while (reader.Read()) { if (reader.IsStartElement()) { switch (reader.Name) { case "Employee": Console.WriteLine(); break; case "ID": Console.WriteLine("ID: " + reader.ReadString()); break; case "First": Console.WriteLine("First: " + reader.ReadString()); break; case "Last": Console.WriteLine("Last: " + reader.ReadString()); break; case "Salary": Console.WriteLine("Salary: " + reader.ReadString()); break; } } } } } }ID: 1 First: David Last: Smith Salary: 10000 ID: 3 First: Mark Last: Drinkwater Salary: 30000 ID: 4 First: Norah Last: Miller Salary: 20000 ID: 12 First: Cecil Last: Walker Salary: 120000
XmlReader
noteXmlReader
and XmlTextReader
are basically the same. When you call XmlTextReader.Create
, an XmlReader
is returned. The XmlTextReader
type provides more constructors.
XElement
can lead to faster development.We looked at the XmlTextReader
type. With XmlTextReader
, we gain more constructors for using an XmlReader
. These types can be used to develop fast parsers for XML files.