2011-08-23 27 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