用于从XML节点分配变量的VBScript

用于从XML节点分配变量的VBScript,xml,xpath,vbscript,Xml,Xpath,Vbscript,我正在尝试编写一个简单的VBScript,它查看XML文件,提取两个属性,将它们添加到输出文件中。到目前为止,我已经能够使用以下方法加载XML输入文件: Option Explicit Set objDoc = CreateObject("MSXML.DOMDocument") objDoc.Load "C:\_STATS_SCRIPTS\STATS_HOME.xml" 然后我创建并初始化了如下变量: Dim fumlost Dim intercept Dim turnovers fumlos

我正在尝试编写一个简单的VBScript,它查看XML文件,提取两个属性,将它们添加到输出文件中。到目前为止,我已经能够使用以下方法加载XML输入文件:

Option Explicit
Set objDoc = CreateObject("MSXML.DOMDocument")
objDoc.Load "C:\_STATS_SCRIPTS\STATS_HOME.xml"
然后我创建并初始化了如下变量:

Dim fumlost
Dim intercept
Dim turnovers
fumlost="0"
intercept="0"
turnovers="0"
下面是我的XML的样子(在totals子树后被截断):


接下来我需要做的是分配/fbgame/team/totals/fumbles@lost对于我的fumbles变量,分配/fbgame/team/totals/pass@int到我的截距变量,然后将这两个变量相加以进行转换,然后输出。我想我可以处理变量的求和和和输出文件,但是我不知道如何将XML属性分配给我的变量。早些时候,我成功地制作了一个脚本,使用sXPath将客队和主队从我的主输入文件中分离出来,但我目前无法使用在那里学到的知识来完成这项任务


我非常感谢任何对我的帮助,因为我是一名n00b编剧,而且有点过头了

不确定是否在VBScript中使用XPath,但下面的XPath对我很有用:

string(//fbgame/team/totals/fumbles/@lost)
结果:0

string(//fbgame/team/totals/pass/@int)
结果:1

也许这对你的方法有效,或者你可以进一步调整它

如果您需要整个节点,而不仅仅是值,请遵循XPath

//fbgame/team/totals/fumbles[@lost]
导致

 <fumbles no="0" lost="0" />

下面的代码正确地提取了值,但是当求和到“turnsovers”时,返回的输出是“01”,而不仅仅是“1”。这是正确的吗

Set colNodes=xmlDoc.selectNodes ("//fbgame/team/totals/pass/@int")

For Each objNode in colNodes
  intercept = objNode.text
  Wscript.Echo intercept 
Next

Set colNodes=xmlDoc.selectNodes ("//fbgame/team/totals/fumbles/@lost")

For Each objNode in colNodes
  fumlost = objNode.text
  Wscript.Echo fumlost
Next

turnovers = fumlost + intercept

Wscript.Echo turnovers

谢谢你的帮助!没有stackoverflow就不可能做到这一点!最终工作代码:

Set xmlDoc = CreateObject("Microsoft.XMLDOM")

xmlDoc.Async = "False"
xmlDoc.Load("STATS_HOME.xml")


Dim fumlost
Dim intercept
Dim turnovers
fumlost="0"
intercept="0"
turnovers="0"

Set colNodes=xmlDoc.selectNodes ("//fbgame/team/totals/pass/@int")

For Each objNode in colNodes
  intercept = objNode.text
Next

Set colNodes=xmlDoc.selectNodes ("//fbgame/team/totals/fumbles/@lost")

For Each objNode in colNodes
  fumlost = objNode.text
Next
turnovers = CInt(fumlost) + CInt(intercept)

Dim fso
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
Set f = fso.OpenTextFile("C:\_STATS_SCRIPTS\TO_HOME.txt", 2)
f.Writeline turnovers

不介意格式化,我想我明白了;)问题是在不知道XML的情况下判断结果,但对于as字符串值01格式的CInt(a)是否会转换为整数1。。?希望这不是误会,只是想这是现在的问题。或者你能把结果加起来吗?我不能把这两个变量加起来。我想这只是把它们放在一起,当我做“翻转=截获+丢失”的时候,如果我不得不猜测,我会说我需要把变量转换成整数。我现在正在寻找如何做到这一点……只要看看我最近在下面的评论,也许就是这样(如果是CInt()下一件事是——在这里猜测:你已经有两个变量了;刚刚发现加法需要设置第三个变量,比如:Dim Var3——然后Var3=Var1+Var2才能在Var3中得到结果;也许你也需要先Dim intercept+fumlost?例如:turnsovers=CInt(fumlost)+CInt(intercept)“BOOM”很高兴能帮上忙,祝你好运+问题的thx;以前不知道vbscript xpath,所以看到了一些新的东西
Set colNodes=xmlDoc.selectNodes ("//fbgame/team/totals/pass/@int")

For Each objNode in colNodes
  intercept = objNode.text
  Wscript.Echo intercept 
Next

Set colNodes=xmlDoc.selectNodes ("//fbgame/team/totals/fumbles/@lost")

For Each objNode in colNodes
  fumlost = objNode.text
  Wscript.Echo fumlost
Next

turnovers = fumlost + intercept

Wscript.Echo turnovers
Set xmlDoc = CreateObject("Microsoft.XMLDOM")

xmlDoc.Async = "False"
xmlDoc.Load("STATS_HOME.xml")


Dim fumlost
Dim intercept
Dim turnovers
fumlost="0"
intercept="0"
turnovers="0"

Set colNodes=xmlDoc.selectNodes ("//fbgame/team/totals/pass/@int")

For Each objNode in colNodes
  intercept = objNode.text
Next

Set colNodes=xmlDoc.selectNodes ("//fbgame/team/totals/fumbles/@lost")

For Each objNode in colNodes
  fumlost = objNode.text
Next
turnovers = CInt(fumlost) + CInt(intercept)

Dim fso
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
Set f = fso.OpenTextFile("C:\_STATS_SCRIPTS\TO_HOME.txt", 2)
f.Writeline turnovers