2011-08-23 28 views
1

我將如何通過循環XML來填充圖像?ASP Xml多循環

我可以遍歷各個元素,它的工作原理如下所示,但我想從同一個循環訪問其他元素。

<% 
    Dim xml, thumbnail, content, description, player, entry, title, list 
    Set xml = Server.CreateObject("MSXML2.FreeThreadedDOMDocument") 
    xml.async = False 
    xml.SetProperty "ServerHTTPRequest", True 
    xml.Load("http://gdata.youtube.com/feeds/api/users/Shuggy23/favorites?orderby=updated&max-results=15") 

    Set entry = xml.getElementsByTagName("entry") 
    Set thumbnail = xml.getElementsByTagName("media:thumbnail") 
    Set content = xml.getElementsByTagName("media:content") 
    Set description = xml.getElementsByTagName("media:description") 
    Set player = xml.getElementsByTagName("media:player") 
    Set title = xml.getElementsByTagName("media:title") 

    For Each xmlItem In thumbnail 
     Response.Write xmlItem.getAttribute("url") & "<br />" 
    Next 

%> 

我想從標題和播放器等其他元素獲取值,但我必須使用單獨的循環才能使其工作。有什麼辦法讓他們在同一個循環中或同時?

謝謝

道格拉斯

回答

0

您可以使用XPath經典ASP內部

Dim xml, thumbnail, content, description, player, entry, title, list 
Set xml = Server.CreateObject("MSXML2.FreeThreadedDOMDocument") 
xml.async = False 
xml.SetProperty "ServerHTTPRequest", True 
xml.Load("http://gdata.youtube.com/feeds/api/users/Shuggy23/favorites?orderby=updated&max-results=15") 

set media_player = xml.selectNodes("feed[0]/entry[0]/media:group[0]/media:player[0]/@url") 
if media_player.length > 0 then 
    response.Write(media_player(0).Text) 
else 
    response.Write("not found") 
end if 

這裏有幾個例子是使用XPath的基礎知識有所幫助:http://www.w3schools.com/xpath/xpath_examples.asp

+0

請注意,默認情況下,選擇語言是XSL模式而不是XPath。雖然XPath對於一些簡單的場景更強大,但它可能比它的價值更麻煩。 – AnthonyWJones

0

那麼你」我們希望避免使用getElementsByTagName方法,但使用該方法訪問結構化信息只是沒有好方法。

聽起來喜歡你首先要枚舉飼料中的條目: -

For Each entry In xml.selectNodes("feed/entry") 
    ''# Do stuff with an entry. 
Next 

現在每個條目要拿到冠軍,並播放器網址,我會假設你其實只需要一個許多可能的縮略圖網址。

For Each entry In xml.selectNodes("feed/entry") 

    Response.Write "Title: " & Server.HTMLEncode(entry.selectSingleNode("title").Text) & "<br />" 
    Response.Write "Player URL: " & Server.HTMLEncode(entry.selectSingleNode("media:group/media:player/@url).Text) & "<br />" 
    Response.Write "Thumbnail URL : " & Server.HTMLEncode(entity.selectSingleNode("media:group/media:thumbnail/@url").Text) & "<br />" 

    Response.Write "<br />" 
Next