Home > Articles > Web Services > XML

  • Print
  • + Share This
Like this article? We recommend

Like this article? We recommend

XmlDocument

The XmlDocument class implements the W3C Document Object Model (DOM) core levels 1 and 2. This class provides random, cached access to the XML data. In other words, the data is held in memory and your program can move forward and backward as needed. Actually, "forward" and "backward" are not really accurate, because the DOM represents XML data as a tree of nodes, so what you are really doing is "walking the tree." The XmlDocument class also permits you to modify the document's data and structure.

You have a lot of flexibility for loading XML into the XmlDocument class: from a string, a stream, a URL, validated XML from an instance of XmlValidatingReader, or partial data (data from a specified node) from an instance of XmlTextReader.

Once the XmlDocument instance is loaded with XML data you "walk the tree," usually starting at the document's root element, as referenced by the class's DocumentElement property. From this element (or any other element) you move around using these class members:

  • FirstChild: A reference to the current elementís first child element.
  • LastChild: A reference to the current elementís last child element.
  • ChildNodes: An XmlNodeList of all the child elements. The list will have length 0 if there are no children.
  • NextSibling: A reference to the next sibling element.
  • PreviousSibling: A reference to the previous sibling element.
  • ParentNode: A reference to the current elementís parent node.

You can create a simple demo program that uses the XmlDocument class to walk through an XML data file, reading the names and values of the elements and attributes and displaying them in a text box. This demo uses the same checkbook data XML file that was shown earlier. To create the demo:

  1. Start a new Windows Application project. Change the form's Text property to "XmlDocument Demo.".
  2. Place a TextBox control on the form. Set its properties as follows:
  3.   Name: txtOutput
      MultiLine: True
      Text: (a blank string)
      ScrollBars: Vertical
  4. Resize the TextBox control to fill the width of the form and about two-thirds of its height.
  5. Add a Button control beneath the TextBox control. Set its properties as follows:
  6.   Name: btnProcess
      Text: Process
  7. Place the code from Listing 3 into the Click() event procedure for the button. If necessary, edit the first line so it points to the location of the checkbook.xml file.

Listing 3. Demonstrating the XmlDocument Class

Private Sub BtnProcess_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnProcess.Click

Dim rdr As New XmlTextReader("checkbook.xml")
Dim xmlDoc As New XmlDocument()
xmlDoc.Load(rdr)
Dim n As XmlNode
Dim n1 As XmlNode
Dim i As Integer
Dim s As String

' Set n to the first  node.
n = xmlDoc.DocumentElement.FirstChild
Do While True
  ' Write out this element's attributes.
  With n.Attributes
    If .Count > 0 Then
      For i = 0 To .Count - 1
        s &= .Item(i).Name & ": " & .ItemOf(i).Value & vbCrLf
      Next
    End If
  End With
  ' Set n1 to the first child node (a  node).
  n1 = n.FirstChild
  Do While Not n1 Is Nothing
    s &= n1.Name & ": " & n1.InnerText & vbCrLf
    n1 = n1.NextSibling()
  Loop
  n = n.NextSibling()
  If n Is Nothing Then Exit Do
  ' A blank line.
  s &= vbCrLf
Loop

txtOutput.Text = s

End Sub

Other Classes in System.XML

We've looked at three of the most important XML-related .Net classes, but there are many more that cannot be covered here. For example, the XmlTextWriter class lets you create XML output that conforms to the W3C Extensible Markup Language (XML) 1.0 and the Namespaces in XML recommendations. And the XslTransform class transforms XML data using an XSLT stylesheet.

XML is becoming increasingly important as a data storage and transfer standard in many areas of information technology. With the tools provided by the .NET Framework, you should be able to handle essentially any XML-related programming task.

  • + Share This
  • 🔖 Save To Your Account