как разобрать xml из объекта WinHttp.WinHttpRequest?

У меня есть автономный VBScript, который подключается к серверу и получает текст ответа (в виде XML) в объекте WinHttpRequest. Теперь мой вопрос заключается в том, как мне анализировать XML-контент в нем. Когда я отправляю запрос (strPostData), мне нужно проанализировать ответ XML. То, что я использую ниже, не работает, так как я не могу распечатать вывод на консоли. Однако я могу вывести ResponseText. Но я не могу его разобрать.

  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>

person Srinivas    schedule 12.01.2012    source источник
comment
Какое сообщение об ошибке вы получаете?   -  person MBu    schedule 13.01.2012
comment
Извините, когда я сказал сообщение, я имел в виду ResponseText. Я изменил вопрос сейчас   -  person Srinivas    schedule 13.01.2012


Ответы (3)


Вы можете использовать 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)   
person RRUZ    schedule 12.01.2012

Я полагаю, вы получаете сообщение об ошибке «Ошибка выполнения: требуется объект». Это вызвано линией

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

Просто удалите set из начала этой строки.

person MBu    schedule 12.01.2012
comment
Извините, когда я сказал сообщение, я имел в виду ResponseText. Я изменил вопрос сейчас - person Srinivas; 13.01.2012
comment
Я спросил о симптомах того, что у вас не получается вывести вывод в консоль. Тем временем я попытался проанализировать ваш XML и Set ops = выдал мне ошибку Object required, поэтому я опубликовал свой ответ. - person MBu; 13.01.2012
comment
Я не получаю никаких ошибок. Вывод просто не печатается на консоли - person Srinivas; 13.01.2012

Вы на правильном пути, используя XMLDOM. Ознакомьтесь с моей статьей Чтение файлов XML в WSH для примеров того, как анализировать определенные данные из ввода XML.

person Nilpo    schedule 13.01.2012