2010-04-14 5 views
3

구조체를 변경할 수없는 주어진 XML 문서가 있고 노드 위에 작성된 주석을 가져 오려고합니다. 이 문서는 다음과 같습니다.XPath를 사용하여 평면 계층의 주석에 액세스

<!--Some comment here-->  
    <attribute name="Title">Book A</attribute> 
    <attribute name="Author"> 
     <value>Joe Doe</value> 
     <value>John Miller</value> 
    </attribute> 
<!--Some comment here--> 
    <attribute name="Code">1</attribute> 

댓글은 선택 사항입니다.하지만 의견이 있으면 추가 할 수 있습니다. 각 댓글 위에 댓글을 달고 싶습니다. /*/comment()[n]을 사용하면 나에게 주석 n을 주지만 n = 2의 경우 자연스럽게 세 번째 속성의 주석을 얻을 수 있으므로 속성과 주석 사이에는 아무런 관련이 없습니다. 당신이 attribute 요소가옵니다 주석을 선택합니다 감사

답변

0

사용을 :

이 더 컴팩트
//comment()[following-sibling::*[1][self::attribute]] 

및 현재 선택된 대답보다 정확합니다. 잘 형식화 된 XML 문서가 제공되지 않았고 주석 노드의 중첩 수준을 알 수 없으므로 축약어 (//)가 필요합니다.

+0

고맙습니다. – Sebastian

1

,이 작동합니다 :

/*/comment()[following-sibling::*[position()=1 and name()='attribute']] 
+0

위대한, 그게 내가 찾고 있던 것입니다. 고마워요 – Sebastian