Java 在androidstudio中解析HTML表
我正在为一个研究项目处理大量数据。我有一个通过Jsoup加载的html文件,但问题是我需要评估的表没有Id或类。我已经搜索了堆栈,但我似乎没有找到一个答案,即如何访问每个Java 在androidstudio中解析HTML表,java,android,html,html-parsing,jsoup,Java,Android,Html,Html Parsing,Jsoup,我正在为一个研究项目处理大量数据。我有一个通过Jsoup加载的html文件,但问题是我需要评估的表没有Id或类。我已经搜索了堆栈,但我似乎没有找到一个答案,即如何访问每个,并从其中获取信息 <table> <tr> <td align="center">inf1</td> <td align="center">date</td> <tdalign="center"
,并从其
中获取信息
<table>
<tr>
<td align="center">inf1</td>
<td align="center">date</td>
<tdalign="center">time</td>
<td align="center">group</td>
<td align="center">name</td>
<td align="center">---</td>
<td align="center">room</td>
<td align="center">---</td>
<td align="center">---</td>
<td> </td>
<tdalign="center">reason</td>
<td align="center"> </td>
</tr>
</table>
inf1
日期
时间
组
名称
---
房间
---
---
原因
(空的
和“--”
仅用于在此表中显示,对我的项目没有任何价值)
我需要按组对每个
(结构相同)进行排序,并使用链接到它们的其他数据进行inf1,以便在android Studio项目中使用这些数据,它们将以不同的方式显示
提前感谢您的帮助:)您可以使用Jsoup CSS选择器和实现Compariable的自定义类来保存记录。大概是这样的:
String html = ""
+"<table>"
+" <tr>"
+" <td align=\"center\">inf1</td>"
+" <td align=\"center\">date</td>"
+" <td align=\"center\">time</td>"
+" <td align=\"center\">group1</td>"
+" </tr> "
+"</table>"
+"<table>"
+" <tr>"
+" <td align=\"center\">inf1</td>"
+" <td align=\"center\">date</td>"
+" <td align=\"center\">time</td>"
+" <td align=\"center\">group0</td>"
+" </tr> "
+"</table>"
+"<table>"
+" <tr>"
+" <td align=\"center\">inf2</td>"
+" <td align=\"center\">date</td>"
+" <td align=\"center\">time</td>"
+" <td align=\"center\">group0</td>"
+" </tr> "
+"</table>"
;
Document doc = Jsoup.parse(html);
class TableRecord implements Comparable<TableRecord>{
public String inf = "";
public String grp = "";
@Override
public int compareTo(TableRecord arg0) {
int cmpGrp = arg0.grp.compareTo(this.grp);
if (cmpGrp==0){
return arg0.inf.compareTo(this.inf);
}
return cmpGrp;
}
@Override
public String toString(){
return "grp="+grp+":inf="+inf;
}
}
List<TableRecord> tableRecords = new ArrayList<>();
Elements trs = doc.select("table tr");
for (Element tr : trs){
Elements tds = tr.select("td");
TableRecord tableRecord = new TableRecord();
tableRecord.inf = tds.get(0).text();
tableRecord.grp = tds.get(3).text();
tableRecords.add(tableRecord);
}
Collections.sort(tableRecords);
for (TableRecord tableRecord:tableRecords){
System.out.println(tableRecord);
}
String html=“”
+""
+" "
+“inf1”
+“日期”
+“时间”
+“第一组”
+" "
+""
+""
+" "
+“inf1”
+“日期”
+“时间”
+“组0”
+" "
+""
+""
+" "
+“inf2”
+“日期”
+“时间”
+“组0”
+" "
+""
;
Document doc=Jsoup.parse(html);
类TableRecord实现了可比较的{
公共字符串inf=“”;
公共字符串grp=“”;
@凌驾
公共整数比较(TableRecord arg0){
int cmpGrp=arg0.grp.compareTo(this.grp);
如果(cmpGrp==0){
返回arg0.inf.compareTo(this.inf);
}
返回cmpGrp;
}
@凌驾
公共字符串toString(){
返回“grp=“+grp+”:inf=“+inf;
}
}
List tableRecords=new ArrayList();
元素trs=文件选择(“表tr”);
用于(元件tr:trs){
元件tds=tr.select(“td”);
TableRecord TableRecord=新的TableRecord();
tableRecord.inf=tds.get(0.text();
tableRecord.grp=tds.get(3.text();
tableRecords.add(tableRecord);
}
收集.分类(表格记录);
for(TableRecord TableRecord:tableRecords){
系统输出打印LN(表格记录);
}
表格结构是否固定?我的意思是inf1td
总是第一组,第四组吗?是的,结构是固定的,它们总是处于相同的位置