ASP Xml多重循环

ASP Xml多重循环,xml,asp-classic,Xml,Asp Classic,为了填充图像,我将如何循环使用XML 我可以在各个元素之间循环,它可以工作,如下所示,但我希望从同一个循环中访问其他元素 <% Dim xml, thumbnail, content, description, player, entry, title, list Set xml = Server.CreateObject("MSXML2.FreeThreadedDOMDocument") xml.async = False xml.SetProperty

为了填充图像,我将如何循环使用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

%>

我想从其他元素(如title和player)中获取值,但我必须使用单个循环才能使其工作。有没有办法让他们同时进入同一个循环

多谢各位


Douglas

您可以在经典ASP.NET中使用XPATH

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基础知识的示例:

您可能希望避免使用
getElementsByTagName
方法,使用该方法访问结构化信息没有好方法

听起来好像您首先要枚举提要中的条目:-

 For Each entry In xml.selectNodes("feed/entry")
   ''# Do stuff with an entry.
 Next
现在,对于每个条目,您都希望获得标题和播放器url,我假设您实际上只需要许多可能的缩略图url中的一个

 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
为xml中的每个条目选择
。选择节点(“提要/条目”)
响应。写入“Title:&Server.HTMLEncode(entry.selectSingleNode(“Title”).Text)”和“
” 响应。写入“播放器URL:&Server.HTMLEncode(entry.selectSingleNode(“媒体:组/媒体:播放器/@URL).Text)”和“
” 响应。写入“缩略图URL:&Server.HTMLEncode(entity.selectSingleNode(“媒体:组/媒体:缩略图/@URL”).Text)”和“
” 响应。写“
” 下一个
请注意,默认情况下,选择语言是XSL模式,而不是XPath。虽然XPath对于某些简单场景更强大,但它可能会带来更多麻烦。