【发布时间】:2015-10-26 20:50:09
【问题描述】:
我有许多要编辑的 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
我在运行时遇到错误,但是,如果我更改行:
设置editNode = xmlDoc.selectsinglenode("/Device/MassStorageMode/UpdateFile[125]/Version/Major")
在这种特殊情况下使用我的索引变量的值,一切都按预期执行。我需要能够用我的索引变量替换数字。
【问题讨论】:
-
这段代码似乎没有使用任何特定的 QTP/UFT 功能,我认为您应该将其重新标记为
vbscript