Vbscript 如何从WinHttp.WinHttpRequest对象解析中的xml?

Vbscript 如何从WinHttp.WinHttpRequest对象解析中的xml?,vbscript,xml-parsing,winhttprequest,Vbscript,Xml Parsing,Winhttprequest,我有一个独立的VBScript,它连接到服务器并在WinHttpRequest对象中获取响应文本(XML)。现在,我的问题是如何解析其中的XML内容。当我发布请求(strPostData)时,我需要解析响应XML。由于无法在控制台上打印输出,我在下面使用的内容无法正常工作。不过我可以输出响应文本。但我无法解析它 Set objWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1") objWinHttp.Send(strPostData)

我有一个独立的VBScript,它连接到服务器并在WinHttpRequest对象中获取响应文本(XML)。现在,我的问题是如何解析其中的XML内容。当我发布请求(strPostData)时,我需要解析响应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>

aaa
44
您可以使用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)   
我想您会遇到“运行时错误:需要对象”错误。这是由线路引起的

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

只需从该行的开头删除
set

使用XMLDOM的方法是正确的。查看我的文章,了解如何从XML输入解析特定数据的示例。

您会收到什么错误消息?对不起,我说的消息是ResponseText。我现在改了问题对不起,当我说留言的时候,我指的是回复文字。我现在更改了问题,我询问了您无法将输出打印到控制台这一事实的症状。与此同时,我试图解析您的XML,并且
Set ops=
给了我“需要对象”的错误,所以我发布了我的答案。我没有收到任何错误。输出只是不打印在控制台上
strFile = "inp.xml"
Set objFS = CreateObject( "Scripting.FileSystemObject" )
set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load(strFile)
For each x in xmlDoc.documentElement.attributes
  WScript.Echo x.nodeName, x.text
Next

set xmlCol = xmlDoc.documentElement.childNodes
For Each Elem In xmlCol 
 If StrComp(Elem.nodeName, "p") = 0 Then
  set nestedChild = Elem.childNodes

  For Each node In nestedChild 
    If StrComp(node.nodeName, "XYZ") = 0 Then
      WScript.Echo Elem.xml
      set a = objFS.CreateTextFile("testfile.txt", true)
      a.WriteLine(Elem.xml)
      a.Close()
    End If
  Next

 End If
Next