2015-08-18 54 views
1

我有一個XML,我想查找註釋中所有粗體的元素(第二次註釋)。使用XPath訪問特定的XML註釋

對於這一點,我已經寫了的xpath:[(。, '自定義START')含有]

類型/ A/B [@名稱= 'FULLTEXT'] /註釋()/以下:: * [not(before :: comment()[contains(。,'END OF CUSTOMIZATIONS')])]

但是,它不起作用。任何想法在xpath中有什麼錯誤?

<Type> 
    <a> 
     <!--START OF CUSTOMIZATIONS--> 
     <c /> 
     <!--END OF CUSTOMIZATIONS--> 
     <b Name="FULLTEXT"> 
      <c /> 
      <c /> 
      <c /> 
      <c /> 
      <c /> 

      **<!--START OF CUSTOMIZATIONS--> 
      <c /> 
      <c /> 
      <c /> 
      <!--END OF CUSTOMIZATIONS-->** 
      <c /> 
     </b> 
    </a> 
</Type> 

回答

0

使用following-siblingpreceding-sibling,而不是僅僅followingpreceding(爲了便於閱讀):

通過使用 not(preceding-sibling::comment()[contains(.,'END OF CUSTOMIZATIONS')])所有 c元件
Type/a/b[@Name='FULLTEXT'] 
/comment()[contains(.,'START OF CUSTOMIZATIONS')] 
/following-sibling::*[not(preceding-sibling::comment()[contains(.,'END OF CUSTOMIZATIONS')])] 

將被過濾掉,因爲它們都具有這樣一前述註釋節點,其是第一次出現<!--END OF CUSTOMIZATIONS-->