2012-01-12 22 views
2

私は、サーバーに接続し、WinHttpRequestオブジェクトで応答テキスト(XMLとして)を取得するスタンドアロンのVBScriptを持っています。さて、私の質問は、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

+0

申し訳ありませんが、私がメッセージを言ったとき、私はResponseTextを意味しました。私は今質問を変更しました – Srinivas

答えて

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を削除行

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

によって引き起こされます。

+0

私がResponseTextを意味するメッセージを言ったとき、私は申し訳ありません。私は今質問を変更しました – Srinivas

+0

あなたは出力をコンソールに出力できないという事実の徴候を尋ねました。その間、私はあなたのXMLを解析しようとしました。そして 'Set ops =' Object required "エラーを出しました。私は答えを投稿しました。 – MBu

+0

エラーはありません。出力はコンソールに表示されません – Srinivas

0

あなたはXMLDOMを使用して正しい軌道に乗っています。特定のデータをXML入力から解析する方法については、私の記事Reading XML Files in WSHを参照してください。

関連する問題