2017-10-19 17 views
-1

私はJsoupを使用してHTML文字列からデータを取得しようとしていますが、成功しません。 HTMLコードはJsoupは常にnullを返します

<form> 
<table> 
    <tr> 
     <th>First</th> 
     <th>Second</th> 
     <th>Third</th> 
    </tr> 
    <tr> 
     <td><input type="text" name="elems[][f]" value="one" /></td> 
     <td><input type="text" name="people[][s]" value="two" /></td> 
     <td><input type="text" name="people[][t]" value="three" /></td> 
    </tr> 
    <tr> 
     <td><input type="text" name="elems[][f]" value="one1" /></td> 
     <td><input type="text" name="people[][s]" value="two2" /></td> 
     <td><input type="text" name="people[][t]" value="three3" /></td> 
    </tr> 
</table> 
<input type="submit" value="next" /> 
私は別の例を試してみた

、何もです。私はthとすべてのtdからデータを取得します。これは「目」の一例です:あなたは、HTMLの入力は、このような文字列変数に置いた場合

Document document = Jsoup.parse(HTMLSTring); 

    Elements tables = document.select("table"); 
    for (Element table : tables){ 
     Elements ths = table.getElementsByTag("th"); 
     for(Element th : ths) 
     { 
      System.out.println(th.text()); 
     } 
    } 
+0

最初に 'tr'を確認する必要はありませんか? –

+0

正しい* '

'の作成を検討しましたか? ''要素の中の ''要素の中にある場合、そして、 '​​'要素は ''要素でグランドファウンダリングされていますか? – EJP

+0

'getElementsByTag'は再帰的なので、最初に' tr'をチェックする必要はありません。あなたのコードは動作します... JSoupが 'null'を返すのではありません。 'HTMLSTring'に正しいhtmlコンテンツを受け取ったかどうか確認しましたか? – Nirekin

答えて

1

あなたのコードは...

に動作します:

public static void main(String[] args) { 
    String HTMLSTring= "<form><table><tr><th>First</th><th>Second</th><th>Third</th></tr><tr><td><input type=\"text\" name=\"elems[][f]\" value=\"one\" /></td><td><input type=\"text\" name=\"people[][s]\" value=\"two\" /></td><td><input type=\"text\" name=\"people[][t]\" value=\"three\" /></td></tr><tr><td><input type=\"text\" name=\"elems[][f]\" value=\"one1\" /></td><td><input type=\"text\" name=\"people[][s]\" value=\"two2\" /></td><td><input type=\"text\" name=\"people[][t]\" value=\"three3\" /></td></tr></table><input type=\"submit\" value=\"next\" />"; 

    Document document = Jsoup.parse(HTMLSTring); 
    Elements tables = document.select("table"); 
    for (Element table : tables){ 
     Elements ths = table.getElementsByTag("th"); 
     for(Element th : ths) 
     { 
      System.out.println(th.text()); 
     } 
    } 
} 

あなたが期待しています結果。

  • まず
  • セカンド
  • サード

あなたがHTMLの入力を読んでいる方法で問題を有していても良いです。

たとえば、ブレークポイントをDocument document = Jsoup.parse(HTMLSTring);に設定して、必ず上位のコンテンツを受信します。

関連する問題

'要素が '