Я написал скрипт для чтения 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>