加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何将HTML转换为2D数组

发布时间:2020-12-15 04:58:27 所属栏目:Java 来源:网络整理
导读:让我说我复制一个完整的 HTML表(当每个tr和td都有额外的属性时) 成为一个字符串.如何获取所有内容(标签之间的内容)并创建一个像原始表一样组织的2D数组? 例如,对于此表: table border="1" tr align= "center" td align="char"TD1/td tdtd1/td td align="ch
让我说我复制一个完整的 HTML表(当每个tr和td都有额外的属性时)
成为一个字符串.如何获取所有内容(标签之间的内容)并创建一个像原始表一样组织的2D数组?

例如,对于此表:

<table border="1">
    <tr align= "center">
        <td align="char">TD1</td>
        <td>td1</td>
        <td align="char">TD1</td>
        <td>td1</td>
    </tr>
    <tr>
        <td>TD2</td>
        <td>tD2</td>
        <td class="bold>Td2</td>
        <td>td2</td>
    </tr>
</table>

我想要这个数组:

PS:我知道我可以使用正则表达式,但它会非常复杂.我想要一个像JSoup这样的工具,可以自动完成所有工作而无需编写太多代码

解决方法

这是使用JSoup( srsly,don’t use regexp for HTML)完成的方法.

Document doc = Jsoup.parse(html);
Elements tables = doc.select("table");
for (Element table : tables) {
    Elements trs = table.select("tr");
    String[][] trtd = new String[trs.size()][];
    for (int i = 0; i < trs.size(); i++) {
        Elements tds = trs.get(i).select("td");
        trtd[i] = new String[tds.size()];
        for (int j = 0; j < tds.size(); j++) {
            trtd[i][j] = tds.get(j).text(); 
        }
    }
    // trtd now contains the desired array for this table
}

此外,在您的示例中,类属性值未在此处正确关闭:

<td class="bold>Td2</td>

它应该是

<td class="bold">Td2</td>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读