首页 > 解决方案 > 如何使用powershell从带有soap标头的xml文件中提取值

问题描述

我有多个 xml 文件,想使用 powershell 提取特定标签的内容。我尝试了以下方法,但似乎不起作用:

第一个例子:

Get-ChildItem -Path $source -Include ('*.xml') | Foreach{

    [XML]$SOAP = Get-Content $_
 
    Write-Host $SOAP.Envelope.Body.Request.Batch.Reference
}

第二个例子:

   [xml]$ret.Envelope.Body.Request.Batch.Reference.'#text'

示例 xml 如下:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
    <soap:Header></soap:Header>
    <soap:Body>
        <v1:Request>
            <batch>
                <batchName>CPayments</batchName>
                <batchId>98754</batchId>
                <creationDate>2018-06-21T20:45:12</creationDate>
                <Reference>833511</Reference>
            </batch>
        </v1:Request>
    </soap:Body>
</soap:Envelope>

标签: xmlpowershellsoap

解决方案


要提取节点的文本值<Reference>,请尝试以下操作:

$items = Select-Xml -Xml $input -XPath '//*[local-name()="Reference"]/text()'
$items| Foreach {$_.Node.Value}

输出:

833511

推荐阅读