как убрать предупреждения в Jtidy в Java - PullRequest
4 голосов
/ 02 июня 2011

Я использую Jtidy парсер в Java.

URL url = new URL("www.yahoo.com"); 
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
InputStream in = conn.getInputStream(); 
doc = new Tidy().parseDOM(in, null);

когда я запускаю это, "doc = new Tidy (). ParseDOM (in, null);" Я получаю некоторые предупреждения следующим образом:

Tidy (vers 4th August 2000) Parsing "InputStream"
line 140 column 5 - Warning: <table> lacks "summary" attribute

InputStream: Doctype given is "-//W3C//DTD XHTML 1.0 Strict//EN"
InputStream: Document content looks like HTML 4.01 Transitional

1 warnings/errors were found!

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

doc = new Tidy().parseDOM(in, null);

Пожалуйста, помогите мне, как это сделать, как удалить эти предупреждения из консоли.

Ответы [ 5 ]

10 голосов
/ 02 июня 2011

Глядя на документацию, я нашел несколько методов, которые могут делать то, что вы хотите.

Есть setShowErrors, setQuiet и setErrout. Вы можете попробовать следующее:

Tidy tidy = new Tidy();
tidy.setShowErrors(0);
tidy.setQuiet(true);
tidy.setErrout(null);
doc = tidy.parseDOM(in, null);

Одного из них может быть уже достаточно, это были все варианты, которые я нашел. Обратите внимание, что это будет просто скрывать сообщения, ничего не делать с ними. Существует также setForceOutput для получения выходных данных, даже если были сгенерированы ошибки.

5 голосов
/ 02 июня 2011

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

Если вы просто хотите, чтобы они ушли (вместе с другими выводами консоли), тогда используйте System.setOut() и / или System.setErr(), чтобы отправить вывод в файл ... или черную дыру.

Для JTidy версии 8 (или более поздней) метод Tidy.setMessageListener(TidyMessageListener) обрабатывает сообщения более изящно.


Кроме того, вы можете отправить отчет об ошибке на webmaster@yahoo.com. : -)

3 голосов
/ 15 февраля 2012
Writer out = new NullWriter();
PrintWriter dummyOut = new PrintWriter(out);
tidy.setErrout(dummyOut);
2 голосов
/ 01 июля 2011

Глядя на документацию, я нашел другой метод, который кажется мне немного более приятным в данном конкретном случае: setShowWarnings(boolean).Этот метод скрывает предупреждения, но ошибки все равно будут выдаваться.

Для получения дополнительной информации смотрите здесь: http://www.docjar.com/docs/api/org/w3c/tidy/Tidy.html#setShowWarnings(boolean)

0 голосов
/ 21 декабря 2014

Я думаю, что это лучшее решение, основанное на ответе Joost:

Tidy tidy = new Tidy();
tidy.setShowErrors(0);
tidy.setShowWarnings(false);
tidy.setQuiet(true);

Все три необходимы.

...