2014-11-13 2 views
0

Я написал скрипт для чтения XML в PowerShell 2.0 ... простой без проблем. Как бы то ни было, проблема заключается в том, что клиент отправляет один и тот же XML в 2 разных форматах (см. Ниже). Когда я изначально начал развиваться у меня был только файл в формате 1. Так что мой код PowerShell выглядел так:Чтение XML-файлов с различными форматами в PowerShell

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

Теперь мой код не работает с форматом 2, поскольку он требует я использую $ Request.Action.InnerText или $ Request.Action. '# Ntext'

Кто-нибудь знает простой способ обработки обоих XML-форматов?

Формат 1 (пространство имен, определенные в корне):

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

ответ

0

я в конечном итоге создание функции для обработки различных способов, что Данные XML-узла могут быть проанализированы.

С благодарностью

Смежные вопросы