2011-12-05 4 views
1

XMLファイルから値を取得したい。 m1,m2およびm3の値の配列を作成するにはどうすればよいですか?どのようにこれを行うことができますか?ここでXMLの値から配列を作成する

はXML

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

ここだが、私が持っているASPコードです:あなたは、現在の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

コードを指定すると、 'Menus'はすでに配列になりますか?私はあなたがここで何をしようとしているのか混乱しています。 –

答えて

0

を言っていますか? 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 
関連する問題