1

我对 XML 和 Web 服务非常陌生,所以我正在寻找一些方向。我有一个经典的 ASP Web 应用程序(好吧,别开玩笑了!),它使用 Web 服务从数据库中检索数据。我可以调用 Web 服务并很好地接收 SOAP 响应。我的问题是在尝试解析响应时出现的。我调用网络服务的代码是这样的......

Dim objXMLHttp, strEnvelop, strReturn
strEnvelope = <I build the soap message here>
set objXMLHttp = Server.CreateObject("MSXML2.XMLHTTP")
objXMLHttp.open "POST", "web service URL", false
objXMLHttp.setRequestHeader "Content-Type", "text/xml"
objXMLHttp.send strEnvelope
strReturn = objXMLHttp.responseText

所有这些都完美运行,并且 strReturn 中包含响应 XML。XML 看起来像这样......

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<Body xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<lookupCaseOutputCollection xmlns="http://xmlns.oracle.com/pcbpel/adapter/db/lookupCase" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<lookupCaseOutput>
<C_CASE_ID>100000</C_CASE_ID>
<I_FIRST_NM>BERNADINE</I_FIRST_NM>
<I_MI_NM>C</I_MI_NM>
<I_LAST_NM>TWOTEETH</I_LAST_NM>
<I_DOB_DT>1977-06-26</I_DOB_DT>
</lookupCaseOutput>
</lookupCaseOutputCollection>
</Body>
</Envelope>

当需要解析响应 XML 时,我得到了...

Dim xmlDoc
set xmlDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.async = false
xmlDoc.Load strReturn

这就是我卡住的地方。我需要能够提取和显示单个标签 C_CASE_ID、I_FIRST_NM 等的值。我不知道如何做到这一点。有没有人有任何建议/例子?

谢谢。

4

1 回答 1

4

首先,您需要loadXML而不是load从字符串加载 XML 数据。后者用于从文件加载 XML 数据。

将结构解析为DOMDocument对象后,您可以使用记录的属性和方法。我建议使用selectNodes()selectSingleNode()使用XPath表达式来选择您感兴趣的节点:

xmlDoc.loadXML strReturn

WScript.Echo xmlDoc.selectSingleNode("//C_CASE_ID").text
WScript.Echo xmlDoc.selectSingleNode("//I_FIRST_NM").text
'...
于 2013-03-07T20:48:16.237 回答