2012-01-07 53 views
2

我有這樣的XML文檔:計數兒童的特殊文本中的XPath

<AAA> 
     <CCC> 
      <BBB>SALAM</BBB> 
      <BBB>HALET KHUBE</BBB> 
      <BBB>HEY</BBB> 
      <TTT>SALAM</TTT> 
      <GGG/> 
      <ZZZ/> 
     </CCC> 
     <DDD> 
      <BBB>GOOD</BBB> 
      <BBB>BOOO</BBB> 
      <GGG/> 
      <GGG/> 
      <ZZZ/> 
     </DDD> 
     <EEE> 
      <CCC>TAKE</CCC> 
      <DDD>LEAVE</DDD> 
      <ZZZ/> 
      <ZZZ/> 
      <ZZZ/> 
     </EEE> 
</AAA> 

我想選擇有2個孩子與文本=「薩拉姆」節點(即節點可以有任意數目的孩子,但它必須有2個文本=「SALAM」)。例如在上面的xml中,xpath查詢必須返回CCC標籤。 請幫助我。 感謝

回答

1

使用

/*/*[count(*[text() = 'SALAM']) = 2 ] 

這可能是更有效地使用下面的

/*/* 
    [*[text() = 'SALAM'][2] 
and 
    not([*[text() = 'SALAM'][3]) 
    ] 

在可能的情況下,請儘量避免使用//僞運算符,因爲在很多情況下,運算速度可能非常慢。

1

使用count() XPath函數:

//*[count(./*[text()="SALAM"])=2]