ASP Xml多重循环

时间:2011-08-23 16:08:14

标签: xml asp-classic

我如何循环浏览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

%>

我想从标题和播放器等其他元素中获取值,但我必须使用单独的循环才能使其工作。有没有办法让它们在同一个循环中或同时进行?

谢谢

道格拉斯

2 个答案:

答案 0 :(得分:0)

您可以在Classic ASP中使用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基础知识的示例:http://www.w3schools.com/xpath/xpath_examples.asp

答案 1 :(得分:0)

您希望避免使用getElementsByTagName方法,使用该方法访问结构化信息的方法并不好。

听起来您首先想要枚举Feed中的条目: -

 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