XmlReader
This class
reads XML data. With this System.Xml
type, we sequentially read in each element of an XML file. This reduces memory usage and improves performance.
The XmlReader
requires we call the Read()
function in a loop. This may not be as simple as other approaches, but it often is faster.
This example uses a simple XML file. It contains a perls element and also several article elements. The article element has an attribute "name" as well.
XmlReader.Create
to open an XmlReader
on the target file. Next, we loop through the entire file using While reader.Read()
.IsStartElement
. Then, we can access the Name property on the XmlReader
to get the current tag name.If
-statements or Select Case
statements.Imports System.Xml Module Module1 Sub Main() ' Create an XML reader. Using reader As XmlReader = XmlReader.Create("C:\perls.xml") While reader.Read() ' Check for start elements. If reader.IsStartElement() Then ' See if perls element or article element. If reader.Name = "perls" Then Console.WriteLine("Start <perls> element.") ElseIf reader.Name = "article" Then Console.WriteLine("Start <article> element.") ' Get name attribute. Dim attribute As String = reader("name") If attribute IsNot Nothing Then Console.WriteLine(" Has attribute name: {0}", attribute) End If ' Text data. If reader.Read() Then Console.WriteLine(" Text node: {0}", reader.Value.Trim()) End If End If End If End While End Using End Sub End Module<?xml version="1.0" encoding="utf-8" ?> <perls> <article name="backgroundworker"> Example text. </article> <article name="threadpool"> More text. </article> <article></article> <article>Final text.</article> </perls>Start <perls> element. Start <article> element. Has attribute name: backgroundworker Text node: Example text. Start <article> element. Has attribute name: threadpool Text node: More text. Start <article> element. Text node: Start <article> element. Text node: Final text.
Text nodes can be accessed with the reader.Value
property. This returns the text node if the XmlReader
is currently on a text node. The returned value is a String
.
An XmlReader
provides a fast way to read in XML files. You have to loop over each element with the Read function, and then test the properties of the XmlReader
.