VB.NET XmlReader

Note

XmlReader reads XML data in an efficient way. With this System.Xml type, we sequentially read in each element of an XML file. This reduces memory usage and improves performance. We provide an example for XmlReader.

Example

This example uses a simple XML file located at C:\perls.xml. It contains a <perls> element and also several <article> elements. The article element has an attribute "name" as well.

Extensible markup language: XML

Here:We call XmlReader.Create to open an XmlReader on the target file. Next, we loop through the entire file using While reader.Read().

Program that uses XmlReader: VB.NET

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

Input text: perls.xml

<?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>

Output

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.
Arrow indicates looping

In the loop, we detect start elements using IsStartElement. Then, we can access the Name property on the XmlReader to get the current tag name. To get an attribute, use the indexer reader("name") where "name" is the attribute identifier.

Tip:You can specialize logic based on what the current element is—just use If-statements or Select Case statements.

If ThenSelect Case

Value. Text nodes in the XML file 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 instance.

Strings

Summary

The VB.NET programming language

This example showed some parts of using the XmlReader type. This type 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.


VB.NET: File