XML 解析来自 Invoke-WebRequest 的内容响应



我正在尝试获取XML结果,但不是在字符串中,就像我所做的那样:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://#####">
    <SOAP-ENV:Body>
        <ns0:ResumeOrderResponse xmlns:ns0="http://####" xmlns:ns1="http://######" ns1:transactionID="*********-">
            <ns0:ResponseStatus ns1:code="1">
                <ns1:message>Order  not found</ns1:message>
            </ns0:ResponseStatus>
        </ns0:ResumeOrderResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

这是我处理它的方式:

$header = @{"Authorization" = '********';"SOAPAction"='ResumeOrder'}
$post = Invoke-WebRequest -Uri $uri -Headers $header -Method Post -Body $xml -ContentType "application/soap+xml"
$bn = [xml]$post.Content
Write-Output $bn

我试图只获取元素"ns1:message"中的行,在本例中为"找不到订单"。

您可以提取"ns1:消息"值,例如,

$bn.Envelope.Body.ResumeOrderResponse.ResponseStatus.message

希望对您有所帮助!

这是我在本地测试的样本,

$xmlString = [xml]@'
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://#####">
    <SOAP-ENV:Body>
        <ns0:ResumeOrderResponse xmlns:ns0="http://####" xmlns:ns1="http://######" ns1:transactionID="*********-">
            <ns0:ResponseStatus ns1:code="1">
                <ns1:message>Order  not found</ns1:message>
            </ns0:ResponseStatus>
        </ns0:ResumeOrderResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
'@

$xmlString.Envelope.Body.ResumeOrderResponse.ResponseStatus.message

最新更新