2011-12-05 52 views
1

我想從XML文件中獲取值。我如何製作m1,m2m3?中的值。如何做到這一點?從XML中的值創建數組

這裏是XML

<?xml version="1.0"?> 
<language> 
    <menus> 
     <m1>HomePage</m1> 
     <m2>Contact</m2> 
     <m3>About Us</m3> 
    </menus> 
</language> 

這裏的是ASP代碼,我有:

Set Menus = xmlDoc.selectNodes("//language/menus/*")   
MenuCount = Menus.length 
For Each entry in Menus 
    If entry.tagName = "m1" Then 
     m1 = entry.text 
    elseif entry.tagName="m2" then 
     m2 = entry.text 
    elseif entry.tagName="m3" then 
     m3 = entry.text 
    End If 
Next 
+0

鑑於你的代碼,'菜單'將已經是一個數組?我很困惑你在這裏做什麼。 –

回答

0

你是說你目前的ASP代碼不起作用?下面顯示了一種從XML文件中獲取值並在ASP中使用它們的方法;

<% 
Dim menuItems 'Array of menu items 

Set objHTTP = Server.CreateObject("Msxml2.ServerXMLHTTP") 
objHTTP.open "GET","http://yourxmlfeed.xml",false 
objHTTP.send 
XMLData = objHTTP.responseText 

' this code takes the raw RSSFeed and loads it into an XML Object 
Set xmlFeed = Server.CreateObject("MSXML2.DomDocument.4.0") 
xmlFeed.async = false 
xmlFeed.LoadXml(XMLData) 
Set objHTTP = Nothing 

Set objItems = xmlFeed.getElementsByTagName("menus") 

Set xmlFeed = Nothing 

' loop over all the items in the XML Feed 
For x = 0 to objItems.length - 1 
    Set objItem = objItems.item(x) 
    For Each objChild in objItem.childNodes 
     menuItems = menuItems & objChild.text & "," 
    Next 
Next 

response.write DeleteLastComma(menuItems) 'menuItems is your array of menu items 

Function DeleteLastComma 
    ...function to remove last comma off array 
End Function 
%> 
1

首先,我被迫指出xml結構很差。如果<menus>中的每個元素表示菜單,則所有元素應該具有相同的標籤名稱,例如<menu>。使用1,2和3後綴指示xml設計者對於標識符之間的差異感到困惑。如果這些值是重要的(即,在文檔中的順序位置上不能依賴),那麼這些值應作爲一個屬性: -

<menus> 
    <menu position="1">HomePage</menu> 
    <menu position="2">Contact</menu> 
    <menu position="3">About Us</menu> 
</menus> 

至於把它們放在一個數組你的代碼似乎相當關閉,但在這裏你走了。

Dim menuNodes: Set menuNodes= xmlDoc.selectNodes("/language/menus/menu")      
Redim menus(menuNodes.length - 1) 
Dim i : i = 0   
For Each menuNode in menu 
    menus(i) = menu.Text 
    i = i + 1 
Next