【问题标题】:Need to create XML from SOAP response需要从 SOAP 响应创建 XML
【发布时间】:2015-12-04 10:56:10
【问题描述】:

我有这个 Powershell 脚本,它允许我将来自 Web 服务调用的 SOAP 响应打印到屏幕上。但是,我现在需要将该 SOAP 响应编写为 XML 文件。

我该怎么做?

这是脚本:

function Execute-SOAPRequest ([Xml]$SOAPRequest, [String] $URL) {
    write-host "Sending SOAP Request To Server: $URL"
    $soapWebRequest = [System.Net.WebRequest]::Create($URL)

    $soapWebRequest.ContentType = 'text/xml;charset="utf-8"'
    $soapWebRequest.Accept      = "text/xml"
    $soapWebRequest.Method      = "POST"

    write-host "Initiating Send."
    $requestStream = $soapWebRequest.GetRequestStream()
    $SOAPRequest.Save($requestStream)
    $requestStream.Close()

    write-host "Send Complete, Waiting For Response."
    $resp = $soapWebRequest.GetResponse()
    $responseStream = $resp.GetResponseStream()
    $soapReader = [System.IO.StreamReader]($responseStream)
    $ReturnXml = [Xml] $soapReader.ReadToEnd()
    $responseStream.Close()

    write-host "Response Received."

    return $ReturnXml
}

$url = 'http://server/services/Assets'
$soap = [xml]@'
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://avid.com/interplay/ws/assets/types">
   <soapenv:Header>
      <typ:UserCredentials>
         <typ:Username>****</typ:Username>
         <typ:Password>****</typ:Password>
      </typ:UserCredentials>
   </soapenv:Header>
   <soapenv:Body>
      <typ:GetChildren>
         <typ:InterplayURI>interplay://server/Projects/Ryan Jensen/Fix</typ:InterplayURI>
         <typ:IncludeFolders>true</typ:IncludeFolders>
         <typ:IncludeFiles>true</typ:IncludeFiles>
         <typ:IncludeMOBs>true</typ:IncludeMOBs>
      </typ:GetChildren>
   </soapenv:Body>
</soapenv:Envelope>
'@

function WriteXmlToScreen ($xml) {
    $StringWriter = New-Object System.IO.StringWriter
    $XmlWriter = New-Object System.XMl.XmlTextWriter $StringWriter
    $xmlWriter.Formatting = "indented"
    $xml.WriteTo($XmlWriter)
    $XmlWriter.Flush()
    $StringWriter.Flush()
    Write-Output $StringWriter.ToString()
}

$ret = Execute-SOAPRequest $soap $url
WriteXmlToScreen $ret

【问题讨论】:

    标签: xml web-services powershell soap web


    【解决方案1】:

    您的 Execute-SOAPRequest 函数已经返回了一个 XML 对象,所以您需要做的就是保存它:

    $ret = Execute-SOAPRequest $soap $url
    $ret.Save('C:\path\to\output.xml')
    

    【讨论】:

      猜你喜欢
      • 2013-06-01
      • 2017-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-03
      • 1970-01-01
      • 2013-06-23
      • 1970-01-01
      相关资源
      最近更新 更多