4

我在 java 中使用 Jtidy 解析器。

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);

请帮助我,如何做到这一点,如何从控制台中删除这些警告。

4

5 回答 5

11

查看文档,我发现了一些可以满足您需求的方法。

有和。setShowErrors_ 您可能想尝试以下方法:setQuietsetErrout

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

其中一个可能已经足够了,这些都是我找到的所有选项。请注意,这只会隐藏消息,而不是对它们做任何事情。setForceOutput即使生成了错误,也可以获得输出。

于 2011-06-02T11:28:37.423 回答
5

如果您想将 JTidy 警告重定向到(例如)log4j 记录器,请阅读此博客条目

如果您只是想让它们消失(连同其他控制台输出),则使用System.setOut()和/或System.setErr()将输出发送到文件……或黑洞。

对于 JTidy 版本 8(或更高版本),该Tidy.setMessageListener(TidyMessageListener)方法更优雅地处理消息。


或者,您可以将错误报告发送到webmaster@yahoo.com. :-)

于 2011-06-02T11:25:22.637 回答
3
Writer out = new NullWriter();
PrintWriter dummyOut = new PrintWriter(out);
tidy.setErrout(dummyOut);
于 2012-02-14T21:05:40.990 回答
2

查看文档,我发现在这种特殊情况下对我来说似乎更好的另一种方法:setShowWarnings(boolean). 此方法将隐藏警告,但仍会抛出错误。

有关更多信息,请查看此处: http ://www.docjar.com/docs/api/org/w3c/tidy/Tidy.html#setShowWarnings(boolean )

于 2011-06-30T21:03:03.283 回答
0

根据 Joost 的回答,我认为这是最好的解决方案:

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

这三个都是必要的。

于 2014-12-21T14:44:02.590 回答