JSoup Извлечь текст по идентификатору - PullRequest
0 голосов
/ 05 марта 2019

Я хочу извлечь текст "Входящие (100)" HTML по идентификатору, заключенному в теги.Мой тестовый пример выглядит следующим образом:

    String html = "<td id=\"e-mailoutline-row\" title=\"Inbox\" class=\"outline-text\">Inbox (100)</td>";

    Document doc = Jsoup.parse(html);
    Element numberofEmails = doc.getElementById("e-mailoutline-row");

Проблема заключается в том, что numberofEmails всегда равно нулю, поэтому я даже не могу получить текст, не говоря уже о работе с действительным числом в скобках.

Я также попытался:

        String html = "<head><body><td id=\"e-mailoutline-row\" title=\"Inbox\" class=\"outline-text\">Inbox (100)</td></body?</head>";

Как только я получу тестовый пример, я буду использовать его для извлечения этого текста из гораздо большего документа.

Это должно быть просто.Чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Синтаксис команд был правильным, но, похоже, JSoup требователен к правильному формированию HTML.Следующий тестовый пример html работал точно так же, как и предполагалось:

String html = "<head><body><table><tr><td id=\"e-mailoutline-row\">Inbox (100)</td></tr></table></body></head>";

Примечание: мне пришлось добавить не только, но и тоже.Он не работал с головой и телом, только добавленными в исходный тестовый пример.

Спасибо @soorapadman и @Yaroslav за то, что они указали мне правильное направление.

0 голосов
/ 05 марта 2019

Jsoup всегда следует иерархии.Для разбора тега td он должен быть получен из table->tr-->td

 String html = "<head><body><table><tr><td id=\"e-mailoutline-row\">Inbox (100)</td></tr></table></body></head>";
    Document doc = Jsoup.parse(html);
    Element numberofEmails = doc.getElementById("e-mailoutline-row");
    System.out.println(numberofEmails.text());

Вывод:

Inbox (100)
...