【发布时间】:2017-09-07 22:06:31
【问题描述】:
我试图弄清楚如何从我从 PowerShell 中的 Web 服务接收到的 XML 数据中提取数据。我也想将其输出为 XML 文件。
我使用Invoke-WebRequest 使用-Outfile 保存文件,但我不想要所有的肥皂信封数据。从下面的示例数据中,我想要的是 XML 格式的 <Visit_Requests> 中的数据,稍后将使用 SSIS 导入数据库。
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<getData_Visit_RequestsResponse xmlns="http://example.com/">
<getData_Visit_RequestsResult RequestDate="10 Apr 2017" NumberOfRecordsReturned="54" MaximumNumberOfRecordsReturned="10000" RecordsStartAtRowNumber="1" PagingImplemented="true" ErrorMessage="">
<Visit_Requests>
<Visit_Request>
<Visit_ID>3907</Visit_ID>
<Building_Name>Building HHH</Building_Name>
<Level_Name>North Wing</Level_Name>
<Contact_Name>Bill Bloggs</Contact_Name>
</Visit_Request>
<Visit_Request>
<Visit_ID>3904</Visit_ID>
<Building_Name>Building GG</Building_Name>
<Level_Name>South Wing</Level_Name>
<Contact_Name>Mary Bloggs</Contact_Name>
</Visit_Request>
<Visit_Request>
<Visit_ID>3970</Visit_ID>
<Building_Name>Building VV</Building_Name>
<Level_Name>East Wing</Level_Name>
<Contact_Name>Bob Bloggs</Contact_Name>
</Visit_Request>
<Visit_Request>
<Visit_ID>4707</Visit_ID>
<Building_Name>Building ZZ</Building_Name>
<Level_Name>West Wing</Level_Name>
<Contact_Name>Joe Bloggs</Contact_Name>
</Visit_Request>
</Visit_Requests>
</getData_Visit_RequestsResult>
</getData_Visit_RequestsResponse>
</soap:Body>
</soap:Envelope>
我尝试使用this 方法,但没有成功。我不断收到错误
无法导入空节点
或
[System.Xml.XmlElement] 不包含名为“Save”的方法
我已尝试使用将内容写入另一个文件
$xmlnode | Out-File 'c:\temp\aaaatest.xml'
但所写的只是一个 PowerShell 对象{Visit_Request, Visit_Request...}。
使用$xmlnode.OuterXml 获得我想要的结果的代码。
(New-Object System.Net.WebClient).Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
[xml]$result = Invoke-WebRequest $uri -Method post -ContentType 'text/xml' -Body $SOAP_getData_Visit_Requests #-OutFile .\response.xml
[System.Xml.XmlElement] $root = $result.get_DocumentElement()
$xmlnode = $root.Body.getData_Visit_RequestsResponse.getData_Visit_RequestsResult.Visit_Requests
$xmlnode.OuterXml| out-file ".\response.xml"
【问题讨论】:
标签: xml powershell soap