Я пытаюсь выбрать узлы из некоторого XML-ответа веб-службы, но безрезультатно. По какой-то причине я могу выбрать корневой узел («xmldata»), однако, когда я пытаюсь углубиться в детали («xmldata / customers»), все возвращается пустым! Ниже приведен образец XML, возвращаемого веб-службой.
<xmldata>
<customers>
<customerid>22506</customerid>
<firstname>Jim</firstname>
<issuperadmin>N</issuperadmin>
<lastname>Jones</lastname>
</customers>
</xmldata>
и вот код, который я пытаюсь выбрать по индивидуальному заказу, имени и фамилии;
' 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
Результат кода выше - пшик! на страницу ничего не пишется. Одна странная вещь - если я выберу корневой элемент и получу его длину следующим образом:
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. ПОЧЕМУ!
Обратите внимание, что это не единственный способ получить доступ к значениям этих узлов. Я просто не могу понять, что делаю не так. Может ли кто-нибудь помочь мне. Ваше здоровье.