如何从Java类生成HTML文件而无需在类中对HTML标记进行硬编码?

时间:2017-05-29 08:59:07

标签: java html

我想从String内容生成一个HTML文件。 但我不想在Java类中对HTML标记(如<html><body><tr><td>等)进行硬编码。同时,我也不想使用任何第三方库。

这是一个简单的Java项目(没有Web项目风格)。

在我看来,我正在考虑使用属性文件来配置所有HTML标记,并在我的Java类中使用这些属性。

如果有人有任何其他方法可以做到这一点,请通过一个简单的例子给我建议。

1 个答案:

答案 0 :(得分:0)

我一直在为我的一个项目尝试这些行(生成收据的图像,通过HTML / CSS,因为wkhtmltopdf可以将其呈现为PNG)。我想你会发现尝试抽象你的字符串生成器以处理CSV,XML等未来的潜在输出会使你的方法过于复杂。我现在有了通过JSON,XML和HTML处理的对象,它们都需要不同的方法。对于JSON,我依赖于Spring的转换。对于XML,我使用JAXB。对于HTML,我一直在做一些人在模板评论中提到的内容。

e.g。

String template = "<html><head/><body><h1>Hello %s</h1></body></html>";
System.out.println(String.format(template, "World");

正如评论中所建议的那样,您可以从文件中加载该模板字符串,但这会很快变得复杂,例如,如果您的第一个对象中有对象需要生成自己的HTML:

public Class Container{
    private String name;
    private OtherClass other;
    public convertToHtml(){
        String template = "<html><head/><body><h1>Hello %s. Other: %s</h1></body></html>";
        return String.format(template, name, other.convertToHtml());
    }
}
public Class OtherClass{
    private String stuff;
    public convertToHtml(){
        String template = "<span>%s</span>";
        return String.format(template, stuff);
    }
}