Я пытаюсь выбрать узлы из XML-ответа на веб-службу безрезультатно. По какой-то причине я могу выбрать корневой узел («xmldata»), однако, когда я пытаюсь глубже сверлить («xmldata/customers»), все возвращается пустым! Ниже приведен образец XML, который возвращается веб-сервисом.VBScript не может выбирать узлы XML
<xmldata>
<customers>
<customerid>22506</customerid>
<firstname>Jim</firstname>
<issuperadmin>N</issuperadmin>
<lastname>Jones</lastname>
</customers>
</xmldata>
и вот код, который я пытаюсь выбрать customerid, firstname и lastname;
' Send the Xml
oXMLHttp.send Xml_to_Send
' Validate the Xml
dim xmlDoc
set xmlDoc = Server.CreateObject("Msxml2.DOMDocument")
xmlDoc.load (oXMLHttp.ResponseXML.text)
if(len(xmlDoc.text) = 0) then
Xml_Returned = "<B>ERROR in Response xml:<BR>ERROR DETAILS:</B><BR><HR><BR>"
end if
dim nodeList
Set nodeList = xmlDoc.SelectNodes("xmldata/customers")
For Each itemAttrib In nodeList
dim custID, custLname, custFname
custID =itemAttrib.selectSingleNode("customerid").text
custLname =itemAttrib.selectSingleNode("lastname").text
custFname =itemAttrib.selectSingleNode("firstname").text
response.write("News Subject: " & custID)
response.write("<br />News Subject: " & custLname)
response.write("<br />News Date: " & custFname)
Next
Результат приведенный выше код - zilch! на страницу ничего не написано. Одна странная вещь, если я выбираю корневой элемент и получаю его длину следующим образом;
Set nodeList = xmlDoc.SelectNodes("xmldata")
Response.Write(nodeList.length) '1 is written to page
Он правильно определяет длину 1. Однако, когда я пробую то же самое со следующим узлом вниз следующим образом;
Set nodeList2 = xmlDoc.SelectNodes("xmldata/customers")
Response.Write(nodeList.length) '0 is written to page
Он возвращает длину 0. ПОЧЕМУ!
Обратите внимание, что это не единственный способ получить доступ к значениям этих узлов. Я просто не могу понять, что я делаю неправильно. Может кто-то, пожалуйста, помогите мне. Приветствия.
Привет, Эккерхард, спасибо за ответ. Я попробовал то, что вы предложили, и у меня все еще есть такая же проблема, пытаясь выбрать что-нибудь глубже, чем узел xmldata. – urbanMethod
Приветствия за расширенный ответ. Я решил, что моя проблема связана с чувствительностью к регистру (я опубликовал данные). У меня наверняка будет трещина на скрипте консоли, который вы опубликовали в следующий раз, когда я столкнусь с проблемами XML. – urbanMethod