XPath count in VBScript

15,227

You can only use XPaths that return Nodes in MSXML, other XPath functions can only be used in predicates that ultimately result in a selection of nodes.

Use:-

homeGoals = oXML.SelectNodes("/SoccerMatch/Goals/Goal[@teamId="&homeId&"]").length
Share:
15,227

Related videos on Youtube

Reinout van Rees
Author by

Reinout van Rees

Geek, pure and simple.

Updated on June 04, 2022

Comments

  • Reinout van Rees
    Reinout van Rees almost 2 years

    I am trying to get the number of specific nodes in an XML file using the XPath count function, however, this keeps returning an error "An exception of type 'msxml3.dll: Expression does not return a DOM node."

    How do I get the return value from an XPath count using VBScript and MSXML DOM

    Dim oXML    
    Dim homeId
    Dim awayId
    Dim homeGoals
    Dim awayGoals
    Set oXML = Server.CreateObject("Microsoft.XMLDOM")
    
    oXML.async = false
    oXML.SetProperty "SelectionLanguage", "XPath"
    oXML.SetProperty "ServerHTTPRequest", True
    oXML.validateOnParse = False
    oXML.resolveExternals = False
    
    fileName = "http://server:8090/data/results/m12345.xml")
    oXML.load (fileName)
    
    homeId = oXML.SelectSingleNode("/SoccerMatch/Team[@homeOrAway='Home']/@id").text
    awayId = oXML.SelectSingleNode("/SoccerMatch/Team[@homeOrAway='Away']/@id").text
    Set homeGoals = oXML.SelectSingleNode("count(/SoccerMatch/Goals/Goal[@teamId="&homeId&"])")
    Set awayGoals = oXML.SelectSingleNode("count(/SoccerMatch/Goals/Goal[@teamId="&awayId&"])")