经典ASP - 从ResponseText获取xml节点的值

时间:2015-07-25 18:30:09

标签: xml web-services xpath asp-classic nodes

Classic ASP ,如何从ResponseText获取xml格式的特定 xml节点的值,返回为{{1} }

代码:

string

我以xml格式获取<% If Request.ServerVariables("REQUEST_METHOD") = "POST" Then Dim objRequest, objXMLDoc, objXmlNode Dim strRet, strError, strNome Dim strName envName= Request.Form("text1") Set objRequest = Server.createobject("MSXML2.XMLHTTP") With objRequest .open "GET", "http://dev.xxx.com/Testservice/Services/MyService.asmx/Load?code=" & envName, False .setRequestHeader "Content-Type", "text/xml" .setRequestHeader "SOAPAction", "http://dev.xxx.com/Testservice/Services/MyService.asmx/Load" .send End With Set objXMLDoc = Server.createobject("MSXML2.DOMDocument") objXmlDoc.async = false Response.Write(objRequest.ResponseText) End If %> 字符串,如下所示:

objRequest.ResponseText

现在,我需要获取 名称 <string xmlns="http://xxx.yyy.com/"> <?xml version="1.0" encoding="utf-16"?> <Parent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Textbox> <Id>001</Id> <Name>Name1</Name> </Textbox> <Textbox> <Id>002</Id> <Name>Name2</Name> </Textbox> <Textbox> <Id>003</Id> <Name>Name3</Name> </Textbox> <Textbox> <Id>004</Id> <Name>Name4</Name> </Textbox> <Textbox> <Id>005</Id> <Name>Name5</Name> </Textbox> <Textbox> <Id>006</Id> <Name>Name6</Name> </Textbox> </Parent> </string> 值。也就是说,我需要在asp页面的下拉列表中绑定名称值。值为node

我尝试使用以下代码来检索 名称 Name1, Name2, Name3, Name4, Name5, Name6

node

但是,我无法检索 名称 Response.Write(objXmlDoc.selectSingleNode("//Textbox/Name")) 值。指导我解决这个问题。感谢。

1 个答案:

答案 0 :(得分:1)

您的XML在根级别声明了默认命名空间

string (1,2)

这使得所有元素都没有显式前缀,并且在根的默认命名空间中没有考虑更多本地范围的默认命名空间。要访问命名空间中的元素,您需要定义一个前缀,将其映射到命名空间uri,并相应地在XPath中使用该前缀,例如:

xmlns="http://xxx.yyy.com/"

旁注:除非在XML的最开头,否则在格式良好的XML中不允许使用像objXMLDoc.setProperty "SelectionNamespaces", "xmlns:d='http://xxx.yyy.com/'" Response.Write(objXmlDoc.selectSingleNode("//d:Textbox/d:Name").text) 这样的处理指令。