如何使用JSoup解析和格式化HTML文件元素的内容?

时间:2019-06-05 15:19:18

标签: java html parsing html-table jsoup

我被要求通过任何方式(无论我选择了JSoup解析器,因为我认为这是最好的解决方案),以表中的特定(正确且相同)格式输出给出的代码。我做了一些研究,并观看了一些教程,以了解它们是如何工作的,但被卡住了。

我已经尝试查看StackOverflow并发现了类似的问题,但是,我无法将先前的解决方案应用于我的任务。

我有一个具有三行八列的表,其中每个单独的单元格都必须以特定的方式设置格式(某些格式类似于大写文本,即日期格式)。我本来想提取它们中的每一个,然后尝试使用正则表达式,但是,我只设法提取了每一行。

下面是我要解析的上述表格。

代码:

    ArrayList<String> tableContent = new ArrayList<>();
    File input = new File("[..]task_A1.html");
    Document doc = Jsoup.parse(input, "UTF-8");


    Element table = doc.select("table").get(0);
    Elements rows = table.select("tr");


    for(int i = 0; i < rows.size(); i++){
        Element row = rows.get(i);
        Elements cols = row.select("th");

        tableContent.add(cols.text());
    }

}
<table>
<tr class="primera odd">
<th class="titulo ini" scope="row">2017/10/10</th>
<th class="titulo" scope="col">Demand (b.c)</th>
<th class="titulo" scope="col">Generation(1,234.56)</th>
<th class="titulo" scope="col">Motores diesel</th>
<th class="titulo" scope="col">Turbina de gas</th>
<th class="titulo" scope="col">Fuel + Gas</th>
<th class="titulo" scope="col">Ciclo combinado (3)</th>
<th class="titulo" scope="col">Generación auxiliar (4)</th>
</tr>

<tr class="primera odd">
<th class="titulo ini" scope="row">10102017T0000</th>
<th class="titulo" scope="col">Demand (B.C)</th>
<th class="titulo" scope="col">GENERATION(1234.56)</th>
<th class="titulo" scope="col">Motores diesel</th>
<th class="titulo" scope="col">Turbina%de%gas</th>
<th class="titulo" scope="col">Fuel y Gas(3)</th>
<th class="titulo" scope="col">Ciclo combinado</th>
<th class="titulo" scope="col">Generación auxiliar (4)</th>
</tr>

<tr class="primera odd">
<th class="titulo ini" scope="row">10-10-2017</th>
<th class="titulo" scope="col">Demand (b.c)</th>
<th class="titulo" scope="col">Generation(1234,56)</th>
<th class="titulo" scope="col">Motores diesel</th>
<th class="titulo" scope="col">Turbina de gas</th>
<th class="titulo" scope="col">Fuel y Gas</th>
<th class="titulo" scope="col">Ciclo combinado</th>
<th class="titulo" scope="col">Generación.auxiliar</th>
</tr>
</table>

表格:

2017/10/10需求(b.c)发电(1,234.56)摩托车柴油涡轮燃气燃料+天然气Ciclo combinado(3)GeneraciÃnn辅助(4)

10102017T0000需求(B.C)生成(1234.56)摩托车柴油Turbina%de%gas燃料y气体(3)Ciclo combinadoGeneraciÃnn辅助(4)

2017年10月10日需求(卑诗省)发电(1234,56)摩托柴油涡轮增压天然气燃料和天然气Ciclo combinadoGeneración.auxiliar

更正表格输出:

2017年10月10日需求(卑诗省)产生(1234,56)摩托车柴油发动机和汽油CICLO COMBINADOGENERACIóN.AUXILIAR

2017年10月10日需求(卑诗省)产生(1234,56)摩托车柴油发动机和汽油CICLO COMBINADOGENERACIóN.AUXILIAR

2017年10月10日需求(卑诗省)产生(1234,56)摩托车柴油发动机和汽油CICLO COMBINADOGENERACIóN.AUXILIAR

问题是,如何提取/格式化/解析给定的表,以使所有单元格完全相同并正确格式化?甚至有可能通过使用JSoup来完成此任务,还是有更好的解决方案?

我将不胜感激。

0 个答案:

没有答案