如何使用 PowerShell 将 SOAP 响应对象转换为 XML?

How to Convert SOAP Response Object to XML using PowerShell?

我正在将数据从我们的 Web 应用程序发送到 Oracle UCM。我面临转换存储在文件中的 SOAP 响应的挑战。后来我从文件中读取该响应并转换为 XML 以获取响应代码。下面是代码:

$response | Out-File  $out_path
$Status=($response.Envelope.Body.uploadFileToUcmResponse.return) 
Write-Host $Status
$soap_object= get-content -path $out_path
[xml] $xml=$soap_object[5..6]
$result=$xml.Envelope.Body.uploadFileToUcmResponse.result."#text"
$result 

我在这一行中遇到错误

**[xml] $xml=$soap_object[5..6]**

无法从对象转换为 xml 文档。我花了很多时间来解决这个问题。但这是徒劳的。如果你知道答案请回复我。

下面是我的 SOAP 回复。

--=_Part_920_1255941941.1652372974539
Content-Type: application/xop+xml;charset=utf-8;type="text/xml"
Content-Transfer-Encoding: 8bit
Content-ID: <83415eb1-1a64-4eeb-be91-e4ad0b837350>

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing"><env:Header><wsa:Action>http://xmlns.oracle.com/apps/financials/commonModules/shared/financialUtilService/FinancialUtilService/uploadFileToUcmResponse</wsa:Action><wsa:MessageID>urn:uuid:92433bfb-3f44-4a99-8513-8c2a274818fa</wsa:MessageID></env:Header><env:Body><ns0:uploadFileToUcmResponse xmlns:ns0="http://xmlns.oracle.com/apps/financials/commonModules/shared/financialUtilService/types/"><result xmlns="http://xmlns.oracle.com/apps/financials/commonModules/shared/financialUtilService/types/">10211536</result></ns0:uploadFileToUcmResponse></env:Body></env:Envelope>
------=_Part_920_1255941941.1652372974539--

提前致谢。

[xml] $xml=$soap_object[5..6] 更改为 [xml] $xml=$soap_object[5],因为第 6 行(索引 5)仅包含您要解析的 XML 文本。

但是,除非您需要文件中的 header 字段,否则请考虑使用
$response.Content | Out-File $out_path 以便仅保存响应的 内容,即 XML,然后可以简化为 [xml] $xml=$soap_object