2014-04-04 133 views
0

我有2d陣列從XML派生。 的XML的示例:二維數組中的VBscript搜索值

<string-array name="array1"> 
    <field name="City" type="string">Moscow</field> 
    <field name="Id" type="number">10</field> (p.s. ID is unique within array) 
    <field name="Version" type="number">2</field> 
    ....... 
    </string-array> 

Parcing它:

For i=0 to NodeK.length-1 
    array1(0,i)=NodeK(i).getAttribute("name") 
    array1(1,i)=NodeK(i).text 
Next 

所以2D陣列看起來像:

array1(0,0)="City" 
array1(1,0)="Moscow" 
array1(0,1)="ID" 
array1(1,1)=10 
array1(0,2)="Version" 
array1(1,2)=2 

任務是拿起值ID,以便使用它(在SysId變量中)。下面的代碼不能正常工作

For i=LBound(array1,1) to Ubound (array1,1) 
    For j=Lbound(array1,2) to Ubound(array1,2) 
     if j=0 then 
      if array(i,0)="ID" Then 
       SysID=array(i,1) 
       MsgBox "New ID is: " & ID, 64 
      end if 
     End If 
    Next 
Next 

一旦值(在本例中ID = 10)發現循環應該退出。 提前謝謝!

+0

它是如何工作不正常?你有錯誤嗎?你看到了什麼結果,你期望什麼? – bland

+0

嗨,不,我沒有得到一個錯誤,另一方面上面的循環代碼沒有收到什麼 – AlexPes

回答

0

只寫你的陣列爲表

City ID Version 
Moscow 10 2 

然後你看,你需要循環的「0行的cols」找到鑰匙,並解決相應的「第1行的關口」,以獲得價值。

在代碼:

Option Explicit 

Dim array1(1, 2) 
array1(0,0)="City" 
array1(1,0)="Moscow" 
array1(0,1)="ID" 
array1(1,1)=10 
array1(0,2)="Version" 
array1(1,2)=2 

Dim sFnd : sFnd = "ID" 

Dim i 
For i = 0 To UBound(array1, 2) 
    WScript.Echo array1(0, i) 
    If sFnd = array1(0, i) Then 
     WScript.Echo array1(0, i), "=>", array1(1, i) 
     Exit For 
    End If 
Next 

輸出:

cscript 22862344.vbs 
City 
ID 
ID => 10 
+0

嗨,它運作良好!非常感謝你! – AlexPes