2013-03-07 84 views
1

我对XML和Web服务非常陌生,所以我正在寻找一些方向。我有一个经典的ASP Web应用程序(确定没有笑话!),它使用Web服务从数据库中检索数据。我可以调用Web服务并且可以很好地接收SOAP响应。尝试解析响应时出现问题。我的代码来调用Web服务是这样的...使用VBScript解析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等的值。我不知道如何做到这一点。有没有人有任何建议/例子?

谢谢。

+0

当然,因为我张贴了这个问题,我看了看下的“相关”的主题,并发现了一个话题那完美地回答了我的问题。当然,它没有显示在我发布之前的任何搜索中。人物 :-) – 2013-03-07 17:28:38

回答

3

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

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

xmlDoc.loadXML strReturn 

WScript.Echo xmlDoc.selectSingleNode("//C_CASE_ID").text 
WScript.Echo xmlDoc.selectSingleNode("//I_FIRST_NM").text 
'...