2016-09-06 3 views
2

특정 정보를 추출해야하는 매우 큰 XML 파일이 있습니다. 관련된 하위 요소가있는 노드 속성을 모두 가져와야합니다. 다음은 요소가 배치 된 방법의 예입니다.하위 속성 별 XPath 쿼리

<key name="Test Group"> 
    <key name="Exhibit A"> 
     <key name="Chicago"> 
     <key name="server-01-chi"> 
      <dword name="[SSH2] Port">22</dword> 
     </key> 
     <key name="server-02-chi"> 
     <dword name="[SSH2] Port">22</dword> 
     </key> 
    </key> 
    </key> 
    <key name="Exhibit B"> 
     <key name="Denver"> 
     <key name="server-01-den"> 
      <dword name="[SSH2] Port">22</dword> 
     </key> 
     <key name="server-02-den"> 
     <dword name="[SSH2] Port">22</dword> 
     </key> 
    </key> 
    </key>   
</key> 

이 경우 노드 속성 인 서버 이름을 가져 오려고합니다.

//key[dword]/@name 

또는 "name 속성으로 시작하는이 key 요소 수 :

server-01-chi 
server-02-chi 
server-01-den 
server-02-den 
+0

그러나 요소 '는 하위 요소''가있는 '관련 하위 요소'도 가지고 있습니다. 출력에''name' 속성의''Exhibit A "'값을 원합니다. 그렇다면 필요한 데이터를 선택하는 규칙은 무엇입니까? – CiaPan

답변

3

하나의 옵션이 dword 직접 아이를 가진 모든 key 요소를 검색하는 것입니다 : 그래서이 출력을 필요로하는 위의 XML 주어진 서버 "

//key[starts-with(@name, "server")]/@name 

또는 (뿐만 아니라 모든 key 부모를 통해 이동의 경우 구조는 "엄격"임). 예를 들어, name 테스트의 테스트 그룹은 사전에 알려진 경우 :

//key[@name = 'Test Group']/key/key/key/@name 

모든 표현은 서버 이름과 일치하는 제공하는 샘플 XML에 나를 위해 작동합니다.