2013-06-28 2 views
0

다음 구조로 이름이 innerItem 인 모든 노드 목록을 가져 오려고합니다. 외부의 이유로 쿼리에서 사용할 수있는 유일한 노드 이름은 childId입니다.xpath는 조부모가 특정 이름과 일치하는 경우에만 일치합니다.

복잡성은 innerItem 노드와 innerItemData 노드에서 childId 노드가 발견된다는 것입니다.

나는이 모든 것을 반환하고자하므로 innerItem` 만 일치시켜야합니다.

단일 xpath 표현식으로 가능합니까?

본질적으로 말하자면, childId 노드의 값이 123이고 grandParent 노드 이름이 "Container"인 모든 innerItem 노드를 찾으십시오.

은 당신이 찾고있는 무엇인가이 절대 변하지 않을 것 같은 조부모의 해제 작업을해야하고 항상 innerContainer_def는 등

<?xml version="1.0" encoding="UTF-8"?> 
<Container> 
    <MetaData> 
     <id>1</id> 
     <date /> 
    </MetaData> 
    <innerContainer_abc> 
     <innerItem> 
      <childId>123</childId> 
      <childCode>123-abc</childCode> 
      <innerItemData> 
       <childId>123</childId> 
      </innerItemData> 
     </innerItem> 
     <innerItem> 
      <childId>123</childId> 
      <childCode>123-def</childCode> 
      <innerItemData> 
       <childId>123</childId> 
      </innerItemData> 
     </innerItem> 
    </innerContainer_abc> 
<Container> 

답변

0

이 될 수 있습니다 될 수 있습니다 즉 innerContainer_abc 변경할 수있는 반면 "컨테이너"라고합니다 를 위해 :

//Container/*/innerItem[childId='123'] 

이 요소와 모든 innerItem을 찾고 직접 아이 "조부모"로 컨테이너로 사랑의 값 "123"을 childId.

+0

그게 효과가 있습니다! 고맙습니다 –

관련 문제