我如何循环浏览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 :(得分: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