2009-02-27 15 views
5

Estoy tratando de obtener el número de nodos específicos en un archivo XML utilizando la función de conteo XPath, sin embargo, esto sigue generando un error "Una excepción de tipo 'msxml3.dll: Expresión no devuelve un DOM nodo."Conteo de XPath en VBScript

¿Cómo consigo el valor de retorno de un recuento XPath utilizando VBScript y 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&"])") 

Respuesta

10

Sólo puede utilizar XPaths que devuelven nodos en MSXML, otras funciones XPath sólo se puede utilizar en los predicados que en última instancia resultan en una selección de nodos.

Uso: -

homeGoals = oXML.SelectNodes("/SoccerMatch/Goals/Goal[@teamId="&homeId&"]").length