Как анализировать и форматировать содержимое элемента HTML-файла с помощью JSoup? - PullRequest
1 голос
/ 05 июня 2019

Меня попросили вывести код, который был задан, в определенном (правильном и идентичном) формате в таблице, используя любые средства (однако я выбрал парсер 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) Двигатель дизель Turbina de gas Топливо + газ Ciclo combinado (3) Generación auxiliar (4)

10102017T0000 Генерация спроса (B.C) (1234.56) Motores дизель Турбина% de% газ Топливо y Газ (3) Ciclo combinado Generación auxiliar (4)

10-10-2017 Спрос (b.c) Генерация (1234,56) Моторес дизель Турбина-де-газ Топливо и Газ Ciclo combinado Generación.auxiliar

Правильный вывод таблицы:

10-10-2017 ПОТРЕБЛЕНИЕ (B.C) ГЕНЕРАЦИЯ (1234,56) МОТОР ДИЗЕЛЬНАЯ ТУРБИНА ДЕ ГАЗ ТОПЛИВО И ГАЗ ЦИКЛО КОМБИНАДО GENERACIóN.AUXILIAR

10-10-2017 ПОРЯДОК ТРЕБОВАНИЯ (B.C) (1234,56) МОТОР ДИЗЕЛЬ ТУРБИНА ДЕ ГАЗ ТОПЛИВО И ГАЗ CICLO COMBINADO GENERACIóN.AUXILIAR

10-10-2017 Генерация спроса (B.C) (1234,56) MOTORES DIESEL TURBINA DE GAS FUEL Y GAS CICLO COMBINADO GENERACIóN.AUXILIAR

Вопрос в том, как извлечь / отформатировать / проанализировать данную таблицу, чтобы все ячейки были одинаково и правильно отформатированы? Можно ли даже выполнить эту задачу с помощью JSoup или есть лучшее решение этой проблемы?

Буду признателен за любые предложения.

...