2014-11-13 3 views
0

PowerShell 2.0에서 XML을 읽는 스크립트를 작성했습니다 ... 간단합니다. Howver, 내가 가지고있는 문제는 클라이언트가 두 가지 형식으로 동일한 XML을 보내는 것입니다 (아래 참조). 내가 처음 개발을 시작했을 때 나는 단지 내 파워 쉘 코드처럼 보였다 그래서 형식 1. 파일을했다 :PowerShell에서 다른 형식의 XML 파일 읽기

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

그것이 내가 $ 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 노드 데이터를 파싱 할 수 있습니다.

감사합니다.