在PowerShell中读取具有不同格式的XML文件

时间:2014-11-13 19:48:51

标签: xml namespaces powershell-v2.0

我编写了一个脚本来读取PowerShell 2.0中的XML ...简单没问题。不过,我遇到的问题是客户端以两种不同的格式发送相同的XML(见下文)。当我最初开始开发时,我只有一个格式为1的文件。所以我的powershell代码看起来像:

  [xml]$private:xmlFile = Get-Content $File
  $private:Request = $xmlFile.Request
  $Request.Action # returns Initialization

现在我的代码不能使用格式2,因为它要求我使用$ Request.Action.InnerText或$ Request.Action。' #ntext'

任何人都知道能够处理这两种xml格式的简单方法吗?

格式1(在root中定义的名称空间):

<temp:Request xmlns:ext="http://...">
        <ext:FileInformation>
            <ext:FileDetailsMetadata>
                <core:TransmissionID>TransmissionID0</core:TransmissionID>
                <core:SenderID>SenderID</core:SenderID>
                <core:ReceiverID>ReceiverID</core:ReceiverID>
            </ext:FileDetailsMetadata>
        <ext:Action>Initialization</ext:Action>
        </ext:FileInformation> 
   </temp:Request>

格式2(每个节点中定义的名称空间):

    <temp:Request xmlns:temp="http://..."> 
        <ext:FileInformation xmlns:ext="http://...">
            <ext:FileDetailsMetadata>
                <ns2:TransmissionID xmlns:ns2="http://...">TransmissionId</ns2:TransmissionID>
                <ns2:SenderID xmlns:ns2="...">SenderID</ns2:SenderID>
                <core:ReceiverID xmlns:core="http://...">930989307</core:ReceiverID>
            </ext:FileDetailsMetadata>
            <ns3:Action xmlns:ns3="http://...">Initialization</ns3:Action>          </ext:FileInformation>
</temp:Request>

1 个答案:

答案 0 :(得分:0)

我最终创建了一个函数来处理可以解析xml节点数据的各种方法。

由于