2017-10-19 89 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检索数据。这是“日”的例子:

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

你不需要首先检查'tr',因为'getElementsByTag'是递归的。你的代码工作......这不是关于JSoup返回null。你是否检查过HTMLSTring中是否收到正确的html内容 – Nirekin

回答

1

你的代码工作..

如果你把你的HTML输入到这样一个字符串变量:

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);上放置一个断点,以确保收到正确的内容。

'元素位于'