我正在用Java生成HTML格式的日志。是否有最适合存储HTML的数据结构?
这对我来说似乎不太干净:
String html_header = "<!DOCTYPE html>\n<html><head><title>blah</title>...</html>";
当我需要在标记中使用属性并且必须转义该属性周围的引号时,这会变得特别难看。
创建一个我可以通过Java读取的HTML模板的数据文件会不会更好?
答案 0 :(得分:6)
根据您的具体需求,您可以选择多种方式。如果你想用对象构建一个文档结构,你可以使用DOM4j,它允许你编写这样的代码:
Document document = DocumentHelper.createDocument();
Element html = document.addElement( "html" );
Element head = html.addElement("head");
head.addElement("title").addText("blah");
Element body = html.addElement("body")
// etc
然后可以将此结构转换为字符串,并且将为您处理所有格式详细信息(打开/关闭标记,封闭属性等)。 Jakarta的Element Construction Set提供了一个类似于API的API。
或者,您可以包含一个模板引擎,该引擎允许您使用包含变量值和基本逻辑的占位符来编写HTML文件。然后,您将这些模板与数据组合以生成最终的HTML。 FreeMarker是一个非常广泛使用的引擎,如果你不介意花一点时间学习他们的模板语言,它会给你很大的灵活性。
如果你走这条路线,你会创建一个如下模板:
<html>
<head>
<title>${myTitle}</title>
</head>
<!-- blah -->
</html>