我正在尝试为android的时间表应用程序提取数据信息。 html看起来像这样:
<td bgcolor='#C0C0C0' colspan='1'><font color='#FFFFFF'>9:00</font></td>
<td bgcolor='#C0C0C0' colspan='1'><font color='#FFFFFF'>9:15</font></td>
<td bgcolor='#C0C0C0' colspan='1'><font color='#FFFFFF'>9:30</font></td>
也是这样:
<td align='left'><font color='#FF0000'>Mobility</font></td>
</tr>
</table>
<table cellspacing='0' border='0' width='100%'>
<col align='left' />
<col align='right' />
<tr>
<td align='left'><font color='#000000'>P2016</font></td>
<td align='right'><font color='#008000'>E.Palin</font></td>
</tr>
</table>
<table cellspacing='0' border='0' width='100%'>
<col align='left' />
<tr>
<td align='left'><font color='#000080'>22-29, 32-36</font></td>
</tr>
</table>
我在Android工作室中使用java和jsoup,我想知道我将如何编写代码,以便我可以获得不同的时间和#34; Mobility&#34; &#34; P2016&#34; &#34; E.Palin&#34;和&#34; 22-29,32-36&#34;出现在我的申请表中?
答案 0 :(得分:1)
首先,您的HTML没有形成或只是一个样本?
使用Estivate,您可以这样编写JSoup查询:
File input = new File("C:\\path\\to\\html.html");
Document document= Jsoup.parse(input , "UTF-8", "/");
EstivateMapper mapper = new EstivateMapper();
Result result = mapper.map(document, Result.class);
使用Result类:
public class Result {
@Text(select = "font:matchesOwn(.*:.*)")
public List<String> times;
@Text(select = "font:not(:matchesOwn(.*:.*))")
public List<String> others;
}
您将获得2个列表: 次= [9:00,9:15,9:30],其他= [流动性,P2016,E.Palin,22-29,32-36]
答案 1 :(得分:0)
{{1}}
答案 2 :(得分:0)
jsoup元素支持CSS(或jquery)之类的选择器语法来查找匹配元素
select方法在Document,Element或Elements中可用,并返回Elements列表。
实施例
按标记查找元素,例如td doc.select(&#34; td&#34;);
按ID查找元素,例如#logo doc.select(&#34; #logo&#34;);
按类名查找元素,例如.masthead doc.select(&#34; div.masthead&#34;)。first();
具有属性的元素,例如[href] doc.select(&#34; a [href]&#34;);
try {
File input = new File("C:\\Users\\manna\\Desktop\\html.html");
Document doc = Jsoup.parse(input, "UTF-8");
Elements tableElements = doc.select("td");
for (Element td: tableElements){
System.out.println(td.text());
}
} catch (IOException ex) {
ex.printStackTrace();
}