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-файлы? Огромное спасибо!

Solutions Collecting From Web of "JTidy ничего не возвращает после обработки 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();