Как разобрать XML из объекта WinHttp.WinHttpRequest? - PullRequest
2 голосов
/ 13 января 2012

У меня есть автономный 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>

Ответы [ 3 ]

1 голос
/ 13 января 2012

Вы можете использовать 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 голосов
/ 13 января 2012

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

0 голосов
/ 13 января 2012

Полагаю, вы получаете сообщение об ошибке «Runtime error: Object required». Это вызвано линией

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

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

...