Vbscript 如何通过UFT中的索引变量引用xml节点?

Vbscript 如何通过UFT中的索引变量引用xml节点?,vbscript,qtp,hp-uft,Vbscript,Qtp,Hp Uft,我有许多要编辑的xml文件。我要编辑的第一个节点位于所有文件的顶部,并且易于更改。第二个节点是一个可变索引,具体取决于我试图编辑的文件。我可以很容易地找到节点,甚至编辑正确的节点,如果我引用一个数字。但是,如果通过计数器变量引用该节点,则无法编辑该节点。这是否可能使用UFT?以下是我到目前为止的情况 'Create a blank XML document for copying and load xxx.xml file Set xmlDoc = _ CreateObject("Micro

我有许多要编辑的xml文件。我要编辑的第一个节点位于所有文件的顶部,并且易于更改。第二个节点是一个可变索引,具体取决于我试图编辑的文件。我可以很容易地找到节点,甚至编辑正确的节点,如果我引用一个数字。但是,如果通过计数器变量引用该节点,则无法编辑该节点。这是否可能使用UFT?以下是我到目前为止的情况

'Create a blank XML document for copying and load xxx.xml file
Set xmlDoc = _
  CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = "False"
xmlDoc.Load("G:\xxx\xxx.xml")

'Change the sw version listed at the top of the file to 999
Set colNodes=xmlDoc.selectNodes _
  ("/Device/Model/SoftwareVersion")

For Each objNode in colNodes
   objNode.Text = "999"
Next

'Obtain the part number of the software version  
Set swNode=xmlDoc.selectNodes _
  ("/Device/Model/PartNumber")

For Each objNode in swNode
   swPartNumber = objNode.Text
Next

counter = 0

'Set up var to search through all nodes with strucutre Device/MSM/UpdateFile
Set updateFileNodes=xmlDoc.selectNodes _
  ("/Device/MassStorageMode/UpdateFile")    

'Set up var for updatefile block of major to edit later
Set majorSwNode = xmlDoc.selectNodes _
  ("/Device/MassStorageMode/UpdateFile/Version/Major")  

'Set up var for partnumber block of updatefile to search against for a math
Set partNumberNode = xmlDoc.selectNodes _
    ("/Device/MassStorageMode/UpdateFile/PartNumber")  

For Each objNode in updateFileNodes  

    For Each objNode2 in partNumberNode

        counter = counter + 1
        curPn = objNode2.Text

        isFound = swPartNumber = curPn

                If isFound = True Then 

                Dim index
                index = counter - 1

                'edit the major sw version here...  
                Set editNode = xmlDoc.selectsinglenode ("/Device/MassStorageMode/UpdateFile[counter]/Version/Major")

                editNode.Text = "9"
                xmlDoc.Save "G:\xxx\xxx.xml"                
                Exit For
                End If      
    Next    
Next
但是,如果我更改行,则运行此操作时会出现错误:

Set editNode=xmlDoc.selectsinglenode(“/Device/MassStorageMode/UpdateFile[125]/Version/Major”)

在这种特殊情况下,使用我的索引变量的值,一切都按预期执行。我需要能够用索引变量替换数字。

您需要连接(&)将变量的内容拼接成字符串:

>> counter = 125
>> s = "/Device/MassStorageMode/UpdateFile[counter]/Version/Major"
>> WScript.Echo 1, s
>> s = "/Device/MassStorageMode/UpdateFile[" & counter & "]/Version/Major"
>> WScript.Echo 2, s
>>
1 /Device/MassStorageMode/UpdateFile[counter]/Version/Major
2 /Device/MassStorageMode/UpdateFile[125]/Version/Major

这段代码似乎没有使用任何特定的QTP/UFT功能,我认为您应该将其重新标记为
vbscript
,它工作起来很有魅力。非常感谢你的帮助。