我正在使用JTidy v.r938.我正在使用此代码尝试清理页面…
final Tidy tidy = new Tidy(); tidy.setQuiet(false); tidy.setShowWarnings(true); tidy.setShowErrors(0); tidy.setMakeClean(true); Document document = tidy.parseDOM(conn.getInputStream(),null);
但是当我解析这个URL-http://www.chicagoreader.com/chicago/EventSearch?narrowByDate=This+Week&eventCategory=93922&keywords=&page=1时,事情并没有得到清理.例如,页面上的Meta标签就像
<Meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
保持为
<Meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
而不是“< / Meta>”标记或显示为“< Meta http-equiv =”Content-Type“content =”text / html;字符集= UTF-8 “/>” 中.我通过将生成的JTidy org.w3c.dom.Document输出为String来确认这一点.
我能做些什么才能让JTidy真正清理页面 – 即使其格式正确?我意识到还有其他工具,但这个问题与使用JTIdy有关.
解决方法
如果需要XML格式,则需要为Tidy指定几个标志
private String cleanData(String data) throws UnsupportedEncodingException {
Tidy tidy = new Tidy();
tidy.setInputEncoding("UTF-8");
tidy.setoutputEncoding("UTF-8");
tidy.setWraplen(Integer.MAX_VALUE);
tidy.setPrintBodyOnly(true);
tidy.setXmlOut(true);
tidy.setSmartIndent(true);
ByteArrayInputStream inputStream = new ByteArrayInputStream(data.getBytes("UTF-8"));
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
tidy.parseDOM(inputStream,outputStream);
return outputStream.toString("UTF-8");
}
或者只是想要XHTML表单
Tidy tidy = new Tidy(); tidy.setXHTML(true);