2011-06-02 57 views
4

我在java中使用Jtidy解析器。如何在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); 

请帮我后显示我的控制台上这些 警告,如何做到这一点,如何从控制台中删除这些警告。

回答

8

查看文档我发现了一些可以做你想做的事情的方法。

setShowErrors,setQuietsetErrout。您可能想要尝试以下操作:

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

其中一个已经足够了,这些都是我找到的所有选项。请注意,这只会隐藏邮件,不会对邮件进行任何操作。即使产生错误,也有setForceOutput来获取输出。

+0

感谢Joost.It帮助了我。 – DJ31 2011-06-03 06:03:58

5

如果您想要将JTidy警告重定向到(比方说)log4j记录器,请阅读this blog entry

如果你只是想让它们消失(与其他控制台输出一起),那么使用System.setOut()和/或System.setErr()将输出发送到文件...或黑洞。

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


或者,您可以发送一个错误报告到[email protected]。 :-)

3
Writer out = new NullWriter(); 
PrintWriter dummyOut = new PrintWriter(out); 
tidy.setErrout(dummyOut); 
0

我觉得这是最好的解决方案,基于在Joost的答案:

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

所有这三个是必要的。