2013-06-30 37 views
1

我想要結果爲apple:1,orange:2,pear:3。點(...)表示其他標籤,其數量和名稱是未知的,但在3列中相似。誰能幫忙?謝謝。Jsoup如何在兄弟姐妹中查找文本的順序?

<tr> 
    <td> 
     <span> 
     ..... 
      <h>apple</h> 
     ..... 
     </span> 
    </td> 
    <td> 
     <span> 
      ..... 
       <h>orange</h> 
      ..... 
      </span> 
     </td> 
     <td> 
      <span> 
      ..... 
       <h>pear</h> 
      ..... 
      </span> 
     </td> 
    </tr> 

回答

0

您可以撥打getElementsByTag()中的任何元素以獲得給定類型的所有後代元素(element.getElementsByTag("h")將得到所有<h>),然後就可以遍歷結果用一個簡單的獲取訂單。

見示例代碼:

import org.jsoup.Jsoup; 
import org.jsoup.nodes.*; 
import org.jsoup.select.*; 
public class JsoupHtmlSiblingsOrder { 
    public static void main(String[] args) { 
     String html = "<html><body><span>HELLO!</span><table id=\"myTable\"><tbody>  " + 
       "<tr><td> <span>               " + 
       "   .....               " + 
       "   <h>apple</h>              " + 
       "   .....               " + 
       "   </span>               " + 
       "</td><td><span>               " + 
       "   .....               " + 
       "   <h>orange</h>             " + 
       "   .....               " + 
       "   </span>               " + 
       "</td><td><span>               " + 
       "   .....               " + 
       "   <h>pear</h>              " + 
       "   .....               " + 
       "   </span>               " + 
       "</td></tr>                " + 
       "</tbody></table></body></html>           "; 
     Document doc = Jsoup.parse(html); 
     Element table = doc.getElementById("myTable");; 
     Elements hs = table.getElementsByTag("h"); 
     for (int i = 0; i < hs.size(); i++) { 
      Element h = hs.get(i); 
      System.out.println(h.text()+":"+(i+1)); 
     } 
    } 
} 

輸出:

apple:1 
orange:2 
pear:3 
+0

這就是我所期待的。謝謝。我試着爲你投票,但被拒絕(聲望<15)。 – user2536847

+0

如果標籤也是未知的,即圍繞文本的標籤不是固定的,但它可以是任何標籤(h,span,div等),是否有簡單的方法可以實現類似的結果?謝謝。 – user2536847

+0

嘿,在那裏,我剛過來看到你的這個評論......你還需要嗎? – acdcjunior