The simplest way to instantiate an object of class XMLTextReader can be achieved by passing file name with path information to its constructor.
The XMLTextReader has following essential methods and properties.
Read:- This method reads each xml node from an input file. When it reaches the end of file then it returns false. When the file is read it skips attribute nodes for some reason. Therefore one should use HasAttributes property to determine whether a particular node has attributes associated with it and then browse attributes list.
Close:- This method closes the input stream and sets ReadState property value to Closed.
NodeType:- This property is one of the enumerated values from XMLNodeType enumerator that describes the type of node. The type of node can be xml element, text, comment, declaration, end element, etc.
EOF:- This property describes whether the end of file being read has reached. It returns true when end of file is reached.
HasAttributes:- This property returns true when the xml node has attributes associated with it.
MoveToNextAttribute:- This method causes reader to traverse to the next attribute node in attributes list of an xml element. It returns false when it reaches the end of the list.
IsEmptyElement:- This function returns true if the xml element has no text value. E.g. the function will return true if it encounters an element which is <middleinitial />.
IsStartElement:- This function returns true if the xml element is the starting tag. E.g. the function will return true if it encounters an element which is <middleinitial>.
ReadState:- This property is one of the enumerated values from ReadState enumerator that describes the state of the reader. While the reader is reading the file the state value is Interactive and when it reaches the end of file the state value is EndOfFile. The other values can be xml element, text, comment, declaration, end element, etc.
Encoding:- This property is a read-only property that describes the type of encoding present in the file.
WhiteSpaceHandling:- This property is one of the enumerated values from WhiteSpaceHandling enumerator that describes how to handle white spaces within the file. This property must be set to None so that white space and significant white space nodes are not generated as part of input stream. The other values can be All(generates whitespace and significant whitespace nodes) or Significant(significant whitespace nodes only).
The following code browses through all xml nodes in the file and lists the order in which it visits the nodes, its type, and text contents or attribute name and value or name of the node.
Code:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
ShowXML()
End Sub
Private Sub ShowXML()
Dim xmlreader As XmlTextReader
Dim counter As Int16 = 0
Dim xmlString As String
Dim vbcrlf As String = Chr(13) & Chr(10)
Try
xmlreader = New XmlTextReader(Server.MapPath(filename)) 'default encoding - UTF-8
xmlreader.WhitespaceHandling = WhitespaceHandling.None
'While xmlreader.Read()
xmlreader.Read()
'While Not xmlreader.ReadState.Equals(ReadState.EndOfFile)
While Not xmlreader.EOF
Select Case xmlreader.NodeType
Case XmlNodeType.Element
If xmlreader.IsStartElement() Then
xmlString &= CStr(counter) & "-Start Element-" & xmlreader.Name & vbcrlf
Else
xmlString &= CStr(counter) & "-End Element-" & xmlreader.Name & vbcrlf
End If
If xmlreader.IsEmptyElement() Then
xmlString &= CStr(counter) & "-Empty Element-" & xmlreader.Name & vbcrlf
End If
If xmlreader.HasAttributes Then
counter += 1
While xmlreader.MoveToNextAttribute()
xmlString &= CStr(counter) & "-Attribute-" & xmlreader.Name & "-" & xmlreader.Value & vbcrlf
End While
End If
Case XmlNodeType.Text
xmlString &= CStr(counter) & "-Text-" & xmlreader.Value & vbcrlf
Case XmlNodeType.CDATA
xmlString &= CStr(counter) & "-CDATA-" & xmlreader.Value & vbcrlf
Case XmlNodeType.ProcessingInstruction
xmlString &= CStr(counter) & "-ProcessingInstruction-" & xmlreader.Name & "-" & xmlreader.Value & vbcrlf
Case XmlNodeType.Comment
xmlString &= CStr(counter) & "-Comment-" & xmlreader.Value & vbcrlf
Case XmlNodeType.XmlDeclaration
xmlString &= CStr(counter) & "-XmlDeclaration-" & "<?xml version='1.0'?>" & vbcrlf
Case XmlNodeType.Document
Case XmlNodeType.DocumentType
xmlString &= CStr(counter) & "-Document-DocumentType-" & xmlreader.Name & "-" & xmlreader.Value & vbcrlf
Case XmlNodeType.EntityReference
xmlString &= CStr(counter) & "-EntityReference-" & xmlreader.Name & vbcrlf
Case XmlNodeType.EndElement
xmlString &= CStr(counter) & "-EndElement-" & xmlreader.Name & vbcrlf
End Select
counter += 1
xmlreader.Read()
'End While
End While
''Display the XML content to the console.
TextBox2.ForeColor = System.Drawing.Color.Brown
TextBox2.Text = xmlString
Catch ex As Exception
TextBox2.ForeColor = System.Drawing.Color.Red
TextBox2.Text = ex.Message
End Try
End Sub