我正在尝试使用 jTidy 在我拥有的 HTML 片段上进行 pretty-print 。到目前为止,我已经完成了以下工作。
protected String prettyPrintHTML(String rawHTML) {
Tidy tidy = new Tidy();
tidy.setXHTML(true);
tidy.setIndentContent(true);
tidy.setPrintBodyOnly(true);
tidy.setTidyMark(false);
// Convert HTML to DOM
Document htmlDOM = tidy.parseDOM(new ByteArrayInputStream(rawHTML.getBytes()), null);
// Pretty Print
OutputStream out = new ByteArrayOutputStream();
tidy.pprint(htmlDOM, out);
return out.toString();
}
这有效,但输出包含额外的内容,例如 、
、<title> 和 标记。例如,对于输入
- sub1
- sub2
- sub21
line 1 column 59 - Warning: inserting missing 'title' element
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>
</title>
</head>
<body>
<ul>
<li>
sub1
</li>
<li>
sub2
<ul>
<li>
sub21
</li>
</ul>
</li>
</ul>
</body>
</html>
在浏览 API 后,我找到了 setPrintBodyOnly
方法(我在上面使用过),但仍然没有成功。
我在这里错过了什么?我试过谷歌搜索,但到目前为止所有链接都通向死胡同。
最佳答案
在以下链接中发布了类似的问题。它的答案显示了实现相同目标的一些替代方法。
关于java - jTidy - 漂亮的 headless 打印,标题标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6403779/