2012-01-12 37 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輸入的特定數據的示例。