2009-02-27 26 views
5

我想使用XPath計數函數獲取XML文件中特定節點的數量,但是,這會一直返回錯誤「類型爲msxml3.dll的異常:表達式不返回DOM節點。」VBScript中的XPath計數

如何使用VBScript和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&"])") 

回答

10

您只能使用在MSXML返回節點的XPath的XPath計數得到的返回值,其他XPath函數只能在謂詞中使用,最終導致在選擇節點。

用途: -

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