【问题标题】:Extract XML data and Save as XML file [duplicate]提取 XML 数据并另存为 XML 文件 [重复]
【发布时间】: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


    【解决方案1】:

    我猜你需要$xmlnode.InnerXml$xmlnod.OuterXml

    请发布您的代码,因为不清楚您是如何处理 XML 的。

    【讨论】:

    • 感谢您的意见。我设法使用 $xmlnod.OuterXml 得到我想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 2013-07-28
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多