2016-01-20 70 views
3

我想使用JSoup提取表格行数据。但它不会将结果作为输出。使用JSoup提取表格行数据不会返回任何内容

这是到目前为止我的代码:

String html = "<tbody>" 
       + "<tr>" 
       + "<td><strong>Fit</strong></td>" 
       + "<td>Regular</td>" 
       + "</tr>" 
       + "<tr>" 
       + "<td><strong>Color</strong></td>" 
       + "<td>Multi</td>" 
       + "</tr>" 
       + "<tr>" 
       + "<td><strong>Style</strong></td>" 
       + "<td>Checked</td>" 
       + "</tr>" 
       + "<tr>" 
       + "<td><strong>Fabric</strong></td>" 
       + "<td>Cotton</td>" 
       + "</tr>" 
       + "<tr>" 
       + "<td><strong>Model Stats</strong></td>" 
       + "<td> This model has height 5'9\",Bust 32\",Waist 28\",Hip 36\"and is Wearing Size 10.</td>" 
       + "</tr>" 
       + "</tbody>"; 

     Document doc = Jsoup.parse(html); 


     for (Element table : doc.select("tbody")) { 
      for (Element row : table.select("tr")) { 
       Elements tds = row.select("td"); 
       for (Element td : tds) { 
        System.out.println(td.text()); 
       } 
      } 
     } 

它会很感激,如果任何人可以建议我一个办法让出来放象下面这样:

<strong>Fit</strong> 
Regular 
<strong>Color</strong> 
Multi 
<strong>Style</strong> 
Checked 
<strong>Fabric</strong> 
Cotton ... etc.. 

谢谢。

回答

1

问题是你的html。您应该添加<table></table>开始和你html变量,否则Jsoup将无法正确解析您的html,导致你的<tbody>转化为<body>,这就是为什么你不能选择它在你的查询中。

此外,要产生您想要的输出,请使用td.html()而不是td.text()

+0

非常感谢。它可以很好地纠正你的问题。 :) –