2013-10-20 49 views
0

我再次遇到了在經典asp中從XML文件中提取信息的問題。列出每個xml節點中的所有命名項目

我有這個XML文件:http://treci.co.uk/members/temp/test_corp_2.xml

,我用這個代碼把所有節點的名稱和值:

kill_url = "http://treci.co.uk/members/temp/test_corp_2.xml" 

Set oXML = Server.CreateObject("Msxml2.DOMDocument.6.0") 
Set xh = Server.CreateObject("Msxml2.ServerXMLHTTP.6.0") 
xh.open "GET", kill_url, False 
xh.send 
xml = xh.responseText 
oXML.LoadXML xml 

set nodes = oXML.selectNodes("//*")  
for i = 0 to nodes.length -1 
    response.write(nodes(i).nodeName & " - " & nodes(i).text & "<br />") 
next 

但這不拉每個節點內的所有nameditems。有沒有辦法做到這一點,併產生一個結果是這樣的:

name="kills" 
key="killID" 
columns="killID,solarSystemID,killTime,moonID" 
killID="33891411" 
solarSystemID="31002317" 
killTime="2013-10-18 10:00:00" 
moonID="0" 
characterID="92217137" 
characterName="Justin Perelta" 
corporationID="1160301547" 

等等等等

通過每個命名項目基本上要在每個節點和上市。

回答

0

恐怕我的VB * x *技能早就消失了,但是您選擇了XML文檔中的所有元素(selectNodes(//*)),並想知道爲什麼您不能獲取屬性名稱和值。你的代碼遍歷元素,而不是元素的屬性。

此外,您需要通過nodes.item(i)而不是nodes(i)來引用節點。這是nodes通常不是DOM中的數組。

您需要一個內循環,它遍歷每個節點的attributes屬性返回的映射。

東西就行:

set nodes = oXML.selectNodes("//*")  
for i = 0 to nodes.length -1 
    set attributes = nodes.item(i).attributes 
    for j = 0 to attributes.length - 1 
     response.write(attributes.item(j).nodeName & " - " & attributes.item(j).value & "<br />") 
    next 
next 
+0

這就是整理我的問題,非常感謝你。除了attributes.item(i).value,我改爲attributes.item(j).value – BorisKarlov

+0

糟糕。對於那個很抱歉。修正它的記錄。 –