Intereting Posts
Как получить имя друга, идентификатор, день рождения, местоположение и т. Д. Из API facebook в android? Не удалось преобразовать Bitmap в идеальную основу Base64 String в Android? FillAfter и fillEnabled не работает в Android-анимации просмотра XML Загрузите Android SDK программно Что означает блокировка WAIT_FOR_CONCURRENT_GC? Почему значок панели навигации не отображается в панели действий? Каковы возможные проблемы с безопасностью в Android Запись скрытого файла .nomedia не работает на внутреннем хранилище Использование Docker на Android «Растровое изображение слишком велико, чтобы быть загруженным в текстуру» Почему я получаю исключение ожидания паузы активности, когда мои данные велики? Захват и совместное использование экрана в Android 5.0 Локализация имени пользователя в приложении Android для разных локалей Добавить тень для сдвига навигации Подписка на получение / получение Отто-события Опубликовано от IntentService

JTidy ничего не возвращает после обработки HTML

Я столкнулся с очень неприятной проблемой при использовании jTidy (на Android). Я нашел, что jTidy работает над каждым HTML-документом, который я тестировал, кроме следующего:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <!-- Always force latest IE rendering engine & Chrome Frame Remove this if you use the .htaccess --> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> <title>templates</title> <meta name="description" content="" /> <meta name="author" content="" /> <meta name="viewport" content="width=device-width; initial-scale=1.0" /> <!-- Replace favicon.ico & apple-touch-icon.png in the root of your domain and delete these references --> <link rel="shortcut icon" href="/favicon.ico" /> <link rel="apple-touch-icon" href="/apple-touch-icon.png" /> </head> <body> <div> <header> <h1>Page Heading</h1> </header> <nav> <p><a href="/">Home</a></p> <p><a href="/contact">Contact</a></p> </nav> <div> </div> <footer> <p>&copy; Copyright</p> </footer> </div> </body> </html> 

Но после его убирания jTidy ничего не возвращает (например, если строка, содержащая Tidied HTML, называется результатом, result.equals ("") == true)

Я заметил что-то очень интересное: если я удалю все в части тела HTML, то jTidy отлично работает. Есть что-то в <body> </ body> jTidy не нравится?

Вот код Java, который я использую:

  public String tidy(String sourceHTML) { StringReader reader = new StringReader(sourceHTML); ByteArrayOutputStream baos = new ByteArrayOutputStream(); Tidy tidy = new Tidy(); tidy.setMakeClean(true); tidy.setQuiet(false); tidy.setIndentContent(true); tidy.setSmartIndent(true); tidy.parse(reader, baos); try { return baos.toString(mEncoding); } catch (UnsupportedEncodingException e) { return null; } } 

Что-то не так с моей Java? Это ошибка с jTidy? Есть ли способ заставить jTidy не делать этого? (Я не могу изменить HTML). Если это абсолютно невозможно исправить, есть ли другие хорошие HTML-файлы? Огромное спасибо!

Попробуй это:

 tidy.setForceOutput(true); 

Вероятно, есть ошибки анализа.

Проверьте Jsoup , это моя рекомендация для любой обработки Java Html (я использовал HtmlCleaner, но затем переключился на jsoup) .

Очистка Html с помощью Jsoup:

 final String yourHtml = ... String output = Jsoup.clean(yourHtml, Whitelist.relaxed()); 

Это все!

Или (если вы хотите изменить / удалить / разобрать / …) что-то:

 Document doc = Jsoup.parse(<file/string/website>, null); String output = doc.toString();