Use XPath to query XML data (VB.net) : XPath « XML « ASP.NET Tutorial






<%@ Page Language="VB" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Xml.XPath" %>

<script runat="server">
   sub SelectData(Sender as Object, e as EventArgs)
      Dim objReader as New XmlTextReader(Server.MapPath("Data.xml"))

      Dim objDoc as XPathDocument = new XPathDocument(objReader)
      Dim objNav as XPathNavigator = objDoc.CreateNavigator()

      try
         Dim expr as XPathExpression = objNav.Compile(tbQuery.Text)
         Dim mngr as XmlNamespaceManager = new XmlNamespaceManager(objReader.NameTable)
         mngr.AddNamespace("","x-schema:books.xdr")
         expr.SetContext(mngr)

         dim objIterator as XPathNodeIterator = objNav.Select(expr)

         While objIterator.MoveNext()
            Format(objIterator.Current)
         end while
      catch ex As Exception
         Response.Write(ex.Message)
      end try

      objReader.Close()
   end sub

   Private Sub Format(objNav As XPathNavigator)
      Dim strValue As String
      Dim strName As String

      If objNav.HasChildren then
         strName = objNav.Name
         objNav.MoveToFirstChild()
         strValue = objNav.Value
      Else 
         strValue = objNav.Value
         strName = objNav.Name
      End If

      Response.Write("&lt;<b>" & strName & _
         "</b>&gt;" & strValue & "<br>")
   End Sub
</script>

<html><body>
   <form runat=server>
      <asp:Textbox id="tbQuery" runat=server/>
      <asp:Button id="btnSubmit" text="Submit" 
         runat=server OnClick="SelectData"/><BR>
   </form>
</body></html>

File: Data.xml

<?xml version="1.0"?>
<bookstore>
  <book genre="asdf">
    <title>asdf</title>
    <author>
      <first-name>asdf</first-name>
      <last-name>asdf</last-name>
    </author>
    <price>asdf</price>
  </book>
  <book genre="asdf">
    <title>asdf</title>
    <author>
      <first-name>asdf</first-name>
      <last-name>asdf</last-name>
    </author>
    <price>asdf</price>
  </book>
  <book genre="asdf">
    <title>asdf</title>
    <author>
      <first-name>asdf</first-name>
      <last-name>asdf</last-name>
    </author>
    <price>asdf</price>
  </book>
</bookstore>








25.17.XPath
25.17.1.Use XPath to navigate XML document (VB.net)
25.17.2.Use XPath to query XML data (VB.net)
25.17.3.XPath Navigator Read
25.17.4.XPath Search
25.17.5.Querying XML with XPathDocument and XPathNodeIterator (C#)
25.17.6.Querying XML with XPathDocument and XPathNodeIterator (VB)