我的一个应用程序有完全相同的要求。您可以通过获取序列化的 XOM 文档、将其包装在代码标签中并转义尖括号来完成此操作。下面的示例代码显示了一种方法:
public String getHTMLDoc(Document document) {
try {
// create a new div to hold your document
StringBuilder sb = new StringBuilder("<div id=\"xom\" style=\"font-family: 'Courier New', monospace; white-space: pre-wrap\"><pre>\n");
// Create an array of strings with one string for each line in the document
ByteArrayOutputStream bout = new ByteArrayOutputStream();
Serializer writer = new Serializer(bout, "UTF-8");
writer.setIndent(4);
writer.write(document);
writer.flush();
String xomString = bout.toString("UTF-8");
String[] lines = xomString.split(writer.getLineSeparator());
for (int i = 0; i < lines.length; i++) {
sb.append(convertLine(lines[i]));
}
sb.append("</pre></div>\n");
} catch (IOException ex) {
// handle the error
}
return sb.toString();
}
private String convertLine(String s) {
// wrap the line in a code tag
StringBuilder sb = new StringBuilder("<code>");
// Remove trailing whitespace
Pattern trailingWhiteSpace = Pattern.compile("[ \t\n\f\r]+$");
Matcher m = trailingWhiteSpace.matcher(s);
sb.append(m.replaceAll(""));
// Change all angle brackets "<" and ">"
sb.append(line.replaceAll(">", ">").replaceAll("<", "<"));
sb.append("</code>\n");
return sb.toString();
}