2017-04-12 24 views
0

PowerShellのWebサービスから受け取ったXMLデータからデータを抽出する方法を理解しようとしています。 XMLファイルとしても出力したいです。XMLデータを抽出してXMLファイルとして保存

-Outfileを使用してファイルを保存するのに、Invoke-WebRequestを使用していますが、すべてのソープエンベロープデータが必要なわけではありません。以下のサンプルデータから、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] '保存'

という名前のメソッドが含まれていません私は別のファイルに内容を書き込もうとしました

$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" 

答えて

0

私はあなたが$xmlnode.InnerXml$xmlnod.OuterXmlを必要と推測しています。

XMLの処理方法がわからないため、コードを投稿してください。

+0

入力いただきありがとうございます。私は$ xmlnod.OuterXmlを使って欲しいものを手に入れました。 – MarcusMaximus

関連する問題