2013-01-02 58 views
1

我已經研究了幾個類似問題的Stack Overflow主題。用JSOUP解析HTML文檔,不能選擇表節點?

我有以下問題:我有一個簡單的HTML頁面,下載和.html文件保存在本地,我與JSoup解析它來讀取表的內容。不幸的是,當我用.select(「table」)查找我的表時,它不會返回任何元素。因此,我調試了它,我可以注意到的是...我的身體節點有一個childnode,它看起來完全是String,因此我假設我找不到任何表節點?

任何人都可以幫助我嗎?

這裏是我的代碼片段:

for (Element table : doc.select("table.creditsuisse")) { 
     for (Element row : table.select("tr")) { 
      for (Element tds : row.select("td")){ 
       for(Element link : row.select("href")){ 
        System.out.println(link.text()); 
       } 
       System.out.println(tds.text()); 
      } 
     } 
    } 

這裏是我的輸入文件看起來像:

<html> 
<head> 
</head> 
<body> 
<table class="creditsuisse" width="100%" cellspacing="0" cellpadding="0"> 
     <tbody> 
    <tr> 
     <th>Name</th> 
     <th style="width:170px;">Funktion</th> 
     <th style="width:180px;"> 
     Amtsdauer (Seit)  </th> 
     <th style="width:130px;">Alter (Geburtsdatum)</th> 
     <th style="width:45px;">Neuigkeit</th> 
     </tr> 
      <tr> 

      <td> 
      <a onclick="document.location='/u/p/al_thani_jassim_hamad_j_j-9293792/credit_suisse_ag_CH-020.3.923.549-1.htm'" href="/u/p/al_thani_jassim_hamad_j_j-9293792/credit_suisse_ag_CH-020.3.923.549-1.htm">Al-Thani Jassim Hamad J.J.</a> *&nbsp;<br> 

      </td> 

      <td> 
          VR-Mitglied   
      </td> 
        <td><a onclick="document.location='http://www.moneyhouse.ch/u/pub/credit_suisse_ag_CH-020.3.923.549-1.htm#28.06.2010'" href="/u/pub/credit_suisse_ag_CH-020.3.923.549-1.htm#28.06.2010">2 Jahre (28.06.2010)</a></td> 
        <td>-</td> 
      <td align="center"></td> 
     </tr> 
      <tr> 

      <td> 
      <a onclick="document.location='/u/p/albers_franz-4438178/credit_suisse_ag_CH-020.3.923.549-1.htm'" href="/u/p/albers_franz-4438178/credit_suisse_ag_CH-020.3.923.549-1.htm">Albers Franz</a> *&nbsp;<br> 

      </td> 

      <td> 
          VR-Mitglied   
      </td> 
        <td><a onclick="document.location='http://www.moneyhouse.ch/u/pub/credit_suisse_ag_CH-020.3.923.549-1.htm#04.05.1998'" href="/u/pub/credit_suisse_ag_CH-020.3.923.549-1.htm#04.05.1998">14 Jahre (04.05.1998)</a></td> 
        <td>-</td> 
      <td align="center"></td> 
     </tr> 
    </tbody> 
</table> 
</body> 
</html> 

回答

3

爲了在JSoup讀本地文件,你就需要使用parse method that takes a File object而不是採取HTML內容。更換

Document doc = Jsoup.parse("C:\\...\\myFile.html", "UTF-8"); 

Document doc = Jsoup.parse(new File("C:\\...\\myFile.html"), "UTF-8"); 
+0

非常感謝,就解決了! – user1944199

0

你如何閱讀您的文檔? 如果它只是一個字符串,那麼你需要將其轉換爲「文檔」第一 你可以嘗試這樣的事情:

Document document = Jsoup.parse(YOUR_STRING); 
Elements elements = document.getElementsByTag("table"); 
Element table = elements[0]; 
+0

哎,感謝您的答覆。我已經試過了,不工作要麼很遺憾。我認爲這個問題是,它似乎是一個「TextNode」身體標記內,而不是一個元素..所以一切身體標記內是String .. – user1944199

+0

請看到更新的答案 –

+0

我真的這樣做,除非我做missunderstand你,我這是怎麼解析我的HTML文件: '書籍DOC = Jsoup.parse(「C:\\ \\ ... myFile.html」 「UTF-8」);' – user1944199