Соблазнительно советовать вам использовать JScript на стороне сервера вместо VBScript. Мало того, что это делает такие вещи более естественно, вы, вероятно, знакомы с языком. Недостатком является то, что подавляющее большинство инструкций в Интернете, связанных с ASP, написаны на VBScript.
Ассоциативный массив в VBScript называется Dictionary
и доступен из библиотеки Scripting
. Однако для создания иерархической структуры вам, вероятно, потребуется немного больше помощи. Я хотел бы создать класс вокруг Dictionary
, чтобы я мог хранить больше, чем просто свойство Name
, и облегчить иерархическое манипулирование.
Вот пример класса: -
Class Node
Private myName
Private myChildren
Private Sub Class_Initialize()
Set myChildren = CreateObject("Scripting.Dictionary")
End Sub
Public Property Get Name()
Name = myName
End Property
Public Property Let Name(value)
myName = Value
End Property
Public Function AddChild(value)
If Not IsObject(value) Then
Set AddChild = new Node
AddChild.Name = value
Else
Set AddChild = value
End If
myChildren.Add AddChild.Name, AddChild
End Function
Public Default Property Get Child(name)
Set Child = ObjectOrNothing(myChildren.Item(name))
End Property
Public Property Get Children()
Set Children = myChildren
End Property
Private Function ObjectOrNothing(value)
If IsObject(value) Then
Set ObjectOrNothing = value
Else
Set ObjectOrNothing = Nothing
End If
End Function
End Class
Теперь вы можете создать свое дерево: -
Dim root : Set root = new Node
With root.AddChild("United States")
With .AddChild("Washington")
With .AddChild("Electric City")
.AddChild "Banks Lake"
End With
With .AddChild("Lake Chelan")
.AddChild "Wapato Point"
End With
.AddChild "Gig Harbour"
End With
End With
Теперь получите доступ к этой иерархии как: -
Sub WriteChildrenToResponse(node)
For Each key In node.Children
Response.Write "<div class=""node"">" & vbCrLf
Response.Write "<div>" & root.Child(key).Name "</div>" & vbCrlF
Response.Write "<div class=""children"">" & vbCrLf
WriteChildrenToResponse root.Child(key)
Response.Write "</div></div>"
Next
End Sub
''# Dump content of root heirarchy to the response
WriteChildrenToResponse root