我正在尝试将一些XML提取到旧网站的经典ASP中。
我可以让它适用于一个例子而不是另一个例子。我想知道是否有人可以让我知道我需要做些什么来让他们都跑步。提前谢谢。
工作示例
Dim o2, oXML2
Set oXML2 = Server.CreateObject("Msxml2.DOMDocument.6.0")
Set o2 = Server.CreateObject("Msxml2.ServerXMLHTTP.6.0")
o2.open "GET", "https://api.eveonline.com/eve/CharacterID.xml.aspx?names=BorisKarlov", False
o2.send
xml2 = o2.responseText
oXML2.LoadXML xml2
response.Write oXML2.selectSingleNode("//currentTime").Text
失败的例子
Dim o, oXML
Set oXML = Server.CreateObject("Msxml2.DOMDocument.6.0")
Set o = Server.CreateObject("Msxml2.ServerXMLHTTP.6.0")
o.open "GET", "http://api.freelancer.com/User/Properties.xml?id=sulung81", False
o.send
xml = o.responseText
oXML.LoadXML xml
response.Write oXML.selectSingleNode("//url").Text
答案 0 :(得分:1)
失败的示例有一个XML命名空间集(xmlns="http://api.freelancer.com/schemas/xml-0.1"
)。
此文件中的所有元素都在该命名空间中。选择节点时必须使用它。
Dim oXML, node
Set oXML = Server.CreateObject("Msxml2.DOMDocument.6.0")
oXML.load "http://api.freelancer.com/User/Properties.xml?id=sulung81"
oXML.setProperty "SelectionNamespaces", "xmlns:fl='http://api.freelancer.com/schemas/xml-0.1'"
Set node = oXML.selectSingleNode("/fl:profile/fl:url")
If Not node Is Nothing
Response.Write node.Text
End If
注释
.load()
method直接从网址加载文件。不需要额外的ServerXMLHTTP
对象。selectSingleNode()
的结果 - 可能是Nothing
。fl
。/fl:profile/fl:url
优于//fl:url
。