2015-10-23 70 views
0

我有很多xml文件,我正在嘗試編輯。我想要編輯的第一個節點位於所有文件的頂部,並且很容易更改。第二個節點是一個可變的索引,具體取決於我想要編輯的文件。我可以很容易地找到節點,甚至編輯正確的節點,如果我通過一個數字引用它。但是,如果我通過計數器變量引用它,我不能編輯該節點。這可能使用UFT嗎?以下是我到目前爲止。如何通過UFT中的索引變量引用xml節點?

'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( 「/設備/ MassStorageMode/UpdateFile [125] /版/專業」 )

在這個特殊情況下使用我的索引變量的值,一切都按預期執行。我需要能夠用我的索引變量替換數字。

+0

似乎這個代碼不使用任何特定的QTP/UFT能力,我認爲你應該重新將其標記爲' vbscript' – Motti

回答

0

你需要級聯(&)給一個變量的內容拼接成一個字符串:

>> 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 
+0

這就像一個魅力。非常感謝幫忙。 –