ОК, я в своем уме. Похоже, это должно быть совершенно тривиально, но через час я все еще не могу заставить его работать.
Я пытаюсь получить список часовых поясов из Campaign Monitor API ; к сожалению, страница, на которой мне нужно это сделать, написана на классическом ASP / Javascript, поэтому я не могу просто использовать API-оболочку.
Я делаю запрос так:
var request = Server.CreateObject("Msxml2.ServerXMLHTTP");
request.open("GET", apiurl + "/User.GetTimezones?ApiKey=" + apikey, false);
request.send();
Правильный XML возвращается с сервера следующим образом:
<anyType d1p1:type="ArrayOfString" xmlns:d1p1="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://api.createsend.com/api/">
<string>(GMT) Casablanca</string>
<string>(GMT) Coordinated Universal Time</string>
<string>(GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London</string>
<string>(GMT) Monrovia, Reykjavik</string>
<string>(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna</string>
<string>(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague</string>
<string>(GMT+01:00) Brussels, Copenhagen, Madrid, Paris</string>
(...and so on - I've truncated for the purpose of this question)
</anyType>
Затем я загружаю этот XML в документ MSXML:
var response = Server.CreateObject("Msxml2.DOMDocument.4.0");
response.async = false;
response.validateOnParse = false;
response.resolveExternals = false;
response.setProperty("SelectionNamespaces", "xmlns:d1p1='http://www.w3.org/2001/XMLSchema-instance' xmlns='http://api.createsend.com/api/'");
response.setProperty("SelectionLanguage", "XPath");
if (response.load(request.responseXML))
{
// If I uncomment this, the XML is correctly written out
// Response.Write(response.xml);
var nodes = response.selectNodes("//string");
// No nodes are found, this is always zero
Response.Write(nodes.length);
for (var x = 0; x < nodes.length; x++)
{
// Do something with each time zone value here
}
}
Проблема, как вы можете видеть из комментариев, заключается в том, что я не могу сопоставить эти «строковые» узлы независимо от того, что я делаю. Я довольно ржавый, когда дело доходит до ASP / Javascript - я подозреваю, что это как-то связано с пространствами имен (я знаю, у меня были проблемы с этим в прошлом), но я не уверен, что.
Кто-нибудь может указать, что я делаю не так? Любая помощь высоко ценится!