2012-01-12 84 views
2

我有一个独立的VBScript,它连接到服务器并获取WinHttpRequest对象中的响应文本(如XML)。现在,我的问题是如何解析XML内容。当我发布请求(strPostData)时,我需要解析响应XML。我在下面使用的是不工作的,因为我无法在控制台上打印输出。我能够输出ResponseText。但我无法解析它。如何从WinHttp.WinHttpRequest对象解析xml?

Set objWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1") 
    objWinHttp.Send(strPostData) 
    objWinHttp.WaitForResponse() 

    If objWinHttp.Status = "200" Then 
     GetDataFromURL = objWinHttp.ResponseText 
     Set xmlDoc = CreateObject("Microsoft.XMLDOM") 
     xmlDoc.loadXML(GetDataFromURL) 
     Set ops = xmlDoc.getElementsByTagName("Response\Status").item(0).text 


     WScript.Echo "Output is: " & ops 
     WScript.Echo "Message: " & GetDataFromURL 
     Msgbox GeteDataFromURL 
     WScript.Quit(0) 

这里是XML被解析:

<RCTRequest> 
    <Response> 
     <Name>aaa</Name> 
     <Status>44</Status> 
    </Response> 
</RCTRequest> 
+0

你会得到什么错误信息? – MBu 2012-01-12 22:08:59

+0

对不起,当我说我的意思是ResponseText的消息。我现在改变了这个问题 – Srinivas 2012-01-12 22:25:42

回答

1

您可以使用XPath

Set xmlDoc = CreateObject("Microsoft.XMLDOM") 
    xmlDoc.async = false 
    xmlDoc.SetProperty "SelectionLanguage", "XPath"  
    xmlDoc.loadXML(GetDataFromURL) 
    Set ops =xmlDoc.SelectSingleNode("/RCTRequest/Response/Status") 
    WScript.Echo "Output is: " & (ops.text) 
    WScript.Echo "Message: " & GetDataFromURL 
    Msgbox GeteDataFromURL 
    WScript.Quit(0) 
0

我想你 “运行时错误:所需的对象” 的错误。它是由行

Set ops = xmlDoc.getElementsByTagName("Response\Status").item(0).text 

只需从该行的开头删除set

+0

对不起,当我说我的意思是ResponseText的消息。我现在改变了这个问题 – Srinivas 2012-01-12 22:25:59

+0

我问了你无法将输出打印到控制台这一事实的症状。与此同时,我试图解析你的XML,并且'Set ops ='给了我“Object required”错误,所以我发布了我的答案。 – MBu 2012-01-12 22:35:00

+0

我没有收到任何错误。输出只是不打印在控制台上 – Srinivas 2012-01-13 16:27:54

0

您在使用XMLDOM的正确轨道上。查看我的文章Reading XML Files in WSH,了解如何解析来自XML输入的特定数据的示例。