我试图从一些 web 服务响应 XML 中选择节点无济于事。出于某种原因,我能够选择根节点(“xmldata”)但是,当我尝试更深入地钻取(“xmldata/customers”)时,一切都返回为空!以下是 Web 服务返回的 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。为什么!
请注意,这不是我尝试访问这些节点值的唯一方法。我只是无法弄清楚我做错了什么。有人可以帮我吗。干杯。