Создание массива из значений в XML - PullRequest
1 голос
/ 05 декабря 2011

Я хочу получить значения из файла XML.Как мне сделать массив значений в m1, m2 и m3 ?.Как это сделать?

Вот 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

Ответы [ 2 ]

1 голос
/ 06 декабря 2011

Во-первых, я вынужден указать, что представленная структура 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
0 голосов
/ 05 декабря 2011

Вы говорите, что ваш текущий код 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
%>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...