2013-09-11 2 views
1

I 추출하기 위해 XML 데이터을 가져 다음 XML 사용 주전자 숟가락했습니다 : 나는 루프의 XPath을 설정하면추출 올바른 부모의 속성 값

<Company cname="ABC"> 
<Staffs> 
    <Manager mname="John"> 
     <Subordinate sname="Apple"> 
      <PhoneNo>11111111</PhoneNo> 
     </Subordinate> 
     <Subordinate sname="Becky"> 
      <PhoneNo>22222222</PhoneNo> 
     </Subordinate> 
    </Manager> 
    <Manager mname="Peter"> 
     <Subordinate sname="Cathy"> 
      <PhoneNo>33333333</PhoneNo> 
     </Subordinate> 
     <Subordinate sname="Doris"> 
      <PhoneNo>44444444</PhoneNo> 
     </Subordinate> 
    </Manager> 
</Staffs> 
</Company> 

를/회사/직원/관리자/부하, 잘못된 관리자 이름 (모든 관리자는 John 임)이 있습니다.

Mname: ../../*[name()='Manager']/@*[name()='mname'] 
Sname: @*[name()='sname'] 
PhoneNo: *[name()='PhoneNo'] 

|#|Mname|Sname|PhoneNo | 
|-+-----+-----+--------| 
|1|John |Apple|11111111| 
|2|John |Becky|22222222| 
|3|John |Cathy|33333333| 
|4|John |Doris|44444444| 

올바른 관리자 이름을 얻는 방법을 알려주십시오.

------------------------ 
|#|Mname|Sname|PhoneNo | 
|-+-----+-----+--------| 
|1|John |Apple|11111111| 
|2|John |Becky|22222222| 
|3|Peter|Cathy|33333333| 
|4|Peter|Doris|44444444| 
------------------------ 

답변

1

나는 주전자 또는 숟가락에 대한 anythinh 모르지만 IMO는 "하위는"(그래서 하위 실제 상황입니다) throuh 루프 당신이이 XPath를 사용해야하는 경우 :

MNAME : parent::Manager/@mname

SNAME : @sname

PHONENO : 제안을 PhoneNo

+0

감사합니다. 그것은 Mname을 ** parent :: * [name() = 'Manager']/@ * [name() = 'mname']으로 바꿈으로써 작동합니다 ** – Snakeking

+0

실제로는 ../ : ../Manager 만 필요합니다./@ * [name() = 'mname']이 작동해야합니다. – laurent