Почему текст отображается в одной строке?

#java #android #jsoup

#java #Android #jsoup

Вопрос:

Ну, у меня проблема с моим кодом, мне нужно загрузить код с URL (code: php), используя JSOUP на платформе Android. Сайт выглядит красиво (данные разделяются вводом), а в приложении все написано одной строкой, и я не могу подстроить это под ваши нужды. А именно, я хотел бы, чтобы данные со страницы были расположены в приложении одинаково.

 private void getWebsite(){
         new Thread(new Runnable() {
        @Override
        public void run() {
            final StringBuilder builder = new StringBuilder();

            try {

                Document doc = Jsoup.connect("https://k69.pl/odtwarzacz/aplikacjaRadia.php").get();

                Elements links = ((Document) doc).select("body");


                    for(Element link : links){

                    builder.append(link.attr("<br>")).append(link.text());


                }

            } catch (IOException e){
                builder.append("Aplikacja nie mogła wykonać żądania. Zgłoś ten błąd do administratora aplikacji. Twój błąd to : ").append(e.getMessage()).append("n");
            }


            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    wynik.setText(builder.toString());
                }
            });

        }
    }).start();




}
 

Результат с сайта:

https://imgur.com/a/LrE3oOH

Результат из приложения:

https://imgur.com/a/IlotHa6

Ответ №1:

предназначен для HTML, поэтому, если вы создаете HTML для webview, это будет работать нормально. Однако вы устанавливаете текст так, чтобы HTML-теги не понимались или не выполнялись.

Вместо установки текста вы должны делать

 builder.append(link.attr("n")).append(link.text());
 

Счастливого кодирования!

Комментарии:

1. После изменения кода текст по-прежнему записывается в одной последовательности в приложении.

2. Вероятно, это потому, что вы получаете тег BODY, и он содержит только один элемент. Установите точку отладки и убедитесь, что в вашем теге BODY более одного элемента и что вы правильно перемещаете дочерние элементы, а не только тело как один элемент.

Ответ №2:

                 try {

                Document doc = Jsoup.connect("https://k69.pl/odtwarzacz/aplikacjaRadia.php").get();

                Elements links = ((Document) doc).select("div");


                    for(Element link : links){

                        builder.append(links.attr("n")).append(links);
 

Сэм,
Я изменил код, теперь у меня такой результат (https://imgur.com/a/ts8FPhJ ). Как избавиться от этого div и br?

link.text() <= приводит к продолжению текста в одной строке

Ответ №3:

Спасибо за помощь, я сделал это по-другому, и это работает так, как я хотел. Поменяйте местами элементы «JSOUP» на String.

  for(Element link : links){

                       String tresc = links.toString();

                       String[] x;
                       String zamien;

                       zamien =  tresc.replace("<br>","");
                       x = zamien.split("n");