2012-06-18 87 views
0

比方說,我有一個HTML的結構是這樣 - > (注:在我的代碼有沒有身份證,我只是把他們這裏,所以它更容易解釋)的XPath獲取特定子

<body> 
    <table id=a> 
     <tr> 
     <td> 
      <table id=b> 
      <tr> 
       <td> 
       </td> 
      </tr> 
      </table> 
     </td> 
     </tr> 
    </table> 
    <table id=c> 
     <tr> 
     <td> 
     </td> 
     </tr> 
    </table> 
    </body> 

使用XPath ,//body/table[1]給我的ID爲「B」的內部表,但我真正想要的是它的第一個孩子(「C」)。沿着第$("body >table").eq(1)行的東西,但我使用C#。我如何使用XPath來做到這一點?

Tnx!

編輯: 這是不是一種選擇,我選擇[2]元素,因爲這只是我正在凍脹問題的簡化的解釋...

安德烈

+0

有看看這個問題 http://stackoverflow.com/questions/8713177/get-first-specific-node-wi th-random-optional-subnodes –

+0

是不是第一個元素0? //體/表[0] – Vale

回答

1

元素選擇器從索引1開始(而不是從0開始)。因此,您將不得不使用xpath查詢//body/table[2]

下面是屏幕截圖的解釋。

對於基於0的索引節點將爲空;

enter image description here

但由於該指數從1開始,爲的indeces 1和2個的這些節點將被退回

enter image description here

enter image description here

還是不相信?讓我們來檢查內部表格元素。

首先讓我們以0基於索引檢查(同樣也將是空)

enter image description here

但是,當指數爲1,將返回正確的節點

enter image description here

0

嘗試

//body/table[not(ancestor::td)]