我正在尝试解析来自YouTube的xml回复,但我完全被阻止了,呵呵。
嗯,直到现在我才得到的是:
<%
Option Explicit
Response.Buffer = True
Dim videoVimeo, videoYoutube
videoVimeo = "http://vimeo.com/5866977"
videoYoutube = "http://www.youtube.com/watch?v=d8nxjUlbKJA"
'------------------------------------------------------------------
'----------------------- YouTube request --------------------------
'------------------------------------------------------------------
' replacing the url to get the ID from the video
videoYoutube = Replace(videoYoutube,"http://www.youtube.com/watch?v=","")
' pasting the ID to the api URL provided from YouTube
videoYoutube = "http://gdata.youtube.com/feeds/api/videos/"&videoYoutube
Dim xml
set xml = Server.CreateObject("Microsoft.XMLHTTP")
set xml = Server.CreateObject("MSXML2.ServerXMLHTTP")
xml.Open "GET", videoYoutube, False
On Error Resume Next
xml.Send
Dim docXml
Set docXml = Server.CreateObject("msxml2.DOMDocument")
docXml.loadxml(xml.ResponseText)
Set xml = nothing
%>
好的,从这里我不知道如何解析响应。
我想要做的是将节点保存到标题,上传日期,评级等变量中
我尝试了这个http://www.aspmessageboard.com/showthread.php?t=230539来解决问题,但我无法将每个节点都变成变量。
感谢您的帮助!
答案 0 :(得分:0)
首先,您需要设置命名空间,因为如果没有它,您将无法进行Xpath查询。 这可能会起作用,具体取决于服务器上安装的MSXML版本。
oXslt.setProperty "SelectionNamespaces", "xmlns:atom='http://www.w3.org/2005/Atom'"
如果这不起作用,您可能需要创建一个MXNamespaceManager
Set oNSMgr = Server.CreateObject("MSXML2.MXNamespacemanager")
oNSMgr.declarePrefix "atom", "http://www.w3.org/2005/Atom"
我不确定如何将命名空间管理器与DOMDocument相关联。也许你没必要!
要访问您的数据,您现在可以使用新的前缀进行Xpath查询。
set titlenode = docXml.SelectSingleNode("/atom:entry/atom:title")
title = titlenode.Text
set publishednode = docXml.SelectSingleNode("/atom:entry/atom:published")
publishednode = publishednode .Text
要获得评级,您必须添加新的命名空间
xmlns:gd='http://schemas.google.com/g/2005'
并像这样得到它
set ratingnode = docXml.SelectSingleNode("/atom:entry/gd:rating")
ratingnode = ratingnode.Text
希望有所帮助,帮助我们,并停止使用经典的ASP!
答案 1 :(得分:0)
此代码假定XmlHttp将application / atom + xml识别为XML mime类型,因此ResponseXML
将加载DOM。
<%
Option Explicit
Response.Buffer = True
Dim videoVimeo : videoVimeo = "http://vimeo.com/5866977"
Dim videoYoutube : videoYoutube = "http://www.youtube.com/watch?v=d8nxjUlbKJA"
videoYoutube = Replace(videoYoutube,"http://www.youtube.com/watch?v=","")
videoYoutube = "http://gdata.youtube.com/feeds/api/videos/" & videoYoutube
Dim xhr: Set xhr= Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")
xhr.Open "GET", videoYoutube, False
xhr.Send
If xhr.Status = 200 Then
Dim xml : Set xml = xhr.ResponseXML
xml.SetProperty "SelectionLanguage", "XPath"
Dim ns : ns = "xmlns:a='http://www.w3.org/2005/Atom' "
ns = ns & "xmlns:gd='http://schemas.google.com/g/2005' "
xml.SetProperty "SelectionNamespaces", ns
Dim entry : Set entry = xml.DocumentElement
Dim title : title = entry.SelectSingleNode("a:title").Text
Dim published : published = entry.SelectSingleNode("a:published")
Dim rating : rating = entry.SelectSingleNode("gd:rating").GetAttribute("average")
End If
%>
如果mime类型未被识别为xml,则ReponseXML属性将为Nothing。在这种情况下,ResponseStream属性可用于加载DOM: -
Dim xml : Set xml = Server.CreateObject("MSXML2.DOMDocument.3.0")
xml.load xhr.ResponseStream