Site Search:
Sign in | Join | Help

This Blog

4Penny offers domain names

Syndication

Recent Posts

Tags

No tags have been created or used yet.

Archives

4Penny.net

XML

Simple tasks

Here are a couple of simple tasks in XML for VB.NET

sXML string equals the following

<?xml version='1.0'?>
  <EXAMPLE>
      <CUSTOMER id="1" type="B">Mr.  Jones</CUSTOMER>
      <CUSTOMER id="2" type="C">Mr.  Johnson</CUSTOMER>
  </EXAMPLE>

<%

  Dim oXMLDoc
  Dim oXMLNode
  Dim oXMLNodeList

   Set oXMLDoc =  Server.CreateObject("MSXML2.DOMDocument.4.0")

          oXMLDoc.LoadXML(sXML)

  Set oXMLNode = oXMLDoc.selectSingleNode("//EXAMPLE/CUSTOMER[@id='2' or @type='C']")

         ' oXMLNode.Text will show "Mr Johnson"

  Set oXMLNode = oXMLDoc.selectSingleNode("//EXAMPLE/CUSTOMER[@id='1' and @type='B']")

         ' oXMLNode.Text will show "Mr Jones"
         ' oXMLNode.Attributes.getNamedItem("id").Text will show "1"
         ' oXMLNode.Attributes.getNamedItem("type").Text will show "B"
      
  ' Select a node list where id equals 1 and the type equals B or C.  
  ' In our example, only Mr.  Jones will be returned.

   Set oXMLNodeList = oXMLDoc.selectNodes("//EXAMPLE/CUSTOMER[@id='1' and (@type='B' or @type='C')]")

     ' oXMLNode.Text will show "Mr Jones"

  ' Select a node with a specific text value

   Set oXMLNode = oXMLDoc.selectSingleNode("//EXAMPLE/CUSTOMER[.  ='Mr.  Johnson']")

         ' oXMLNode.Text will show "Mr.  Johnson"

  ' Select node list of all nodes with CUSTOMER not equal to "EggHeadCafe"

   oXMLNodeList.selectNodes("//EXAMPLE/CUSTOMER[.  !='EggHeadCafe']")      



'  Start of MSXML4 or higher features.   If you want to use MSXML3, then
'  you'll need to set the following:  

    oXMLDoc.setProperty "SelectionLanguage", "XPath"


' Search for a substring in an attribute

Set oXMLNode = oXMLDoc.selectSingleNode("//EXAMPLE/CUSTOMER[substring(@type,1,2) ='DE']")      

' Search for a substring in a node value

Set oXMLNode = oXMLDoc.selectSingleNode("//EXAMPLE/CUSTOMER[substring(.,1,3) ='Mr.']")    

' Search for a value contained in an attribute

Set oXMLNode = oXMLDoc.selectSingleNode("//EXAMPLE/CUSTOMER[contains(@type,'DECEA')]")      

' Search for a contained in a node value

Set oXMLNode =  oXMLDoc.selectSingleNode("//EXAMPLE/CUSTOMER[contains(.,'Smith')]")    

' Search only from root of selected node.   This examples gets a list of nodes
' from a specific node not the whole XML document.   This XML document
' is too small to be a reasonable example but you get the idea.  
' The ".//" tells the parser to make the current node the "root" node of the
' document for this specific XPath query.   Without the ".", the XPath query
' would return all CUSTOMER nodes in the entire document even though
' they may be above or below the current node.

  Set oNode = oXMLDoc.selectSingleNode("//EXAMPLE")

  Set oXMLTreeList = oNode.selectNodes(".//CUSTOMER")        

         nTot = oXMLTreeList.length - 1
                
         For nCnt = 0 to nTot
                          
                Set oXMLNode = oXMLTreeList.nextNode()
                msgbox  oXMLNode.Attributes.getNamedItem("id").Text  
      
        Next



'  End of MSXML4 or higher features    
        

Set oXMLNode = nothing
Set oXMLDoc = nothing

%>

Comments

No Comments

Leave a Comment

(required)  
(optional)
(required)  
Add

About Steve Gray

Steve is a seasoned (translate: old) developer in VB and ASP.NET. He spends most of his time in Dynamics GP, writing custom mods for consulting firms. Crystal reports, eConnect, VS Tools for Dynamics... anything that comes along.