从 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"))
值。指导我解决这个问题。感谢。
答案 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)
这样的处理指令。