Java 创建HTML文档

Java 创建HTML文档,java,Java,我想用Java代码创建一个HTML文档,在不依赖第三方LIB的情况下,如何使用JavaSE1.7有效地创建HTML文档 目标是不必手动将html字符串附加在一起,并在保持html有效方面获得一些帮助 创建一个基础抽象类HTMLEntity。这将保存其中的文本和/或元素、样式等。添加一个方法toHtml(或使用toString)来生成HTML。添加方法以添加子对象 abstract class HtmlEntity { private List<HtmlEntity> child

我想用Java代码创建一个HTML文档,在不依赖第三方LIB的情况下,如何使用JavaSE1.7有效地创建HTML文档


目标是不必手动将html字符串附加在一起,并在保持html有效方面获得一些帮助

创建一个基础抽象类HTMLEntity。这将保存其中的文本和/或元素、样式等。添加一个方法toHtml(或使用toString)来生成HTML。添加方法以添加子对象

abstract class HtmlEntity {

  private List<HtmlEntity> children;
  private String tag;
  private boolean canHaveChildren; // for tags like img, hr, br ...
  private boolean canSelfClose; // for tags like img, hr, br ...
  // you get the idea, add a list of classes, an optional id, even a XPath string ...

  public String toString() {
    StringBuilder sb = new StringBuilder("<").append(tag)
    // for each property, sb.append(key).append("=").append(value);
    // for each child, sb.append(child.toString());
    // if canSelfClose sb.append("/>"); else sb.append("</").append(tag).append(">");
  }

  // override this in subclasses, be more restrictive, i.e. for ULs you should have  addChild(LiEntity child);
  public boolean addChild(HtmlEntity child); 
}
抽象类Htmlenty{
私人名单儿童;
私有字符串标签;
私有布尔值canHaveChildren;//用于标记,如img、hr、br。。。
私有布尔值canSelfClose;//用于标记,如img、hr、br。。。
//你明白了,添加一个类列表,一个可选id,甚至一个XPath字符串。。。
公共字符串toString(){
StringBuilder sb=新的StringBuilder(“”);否则sb追加(“”);
}
//在子类中重写此项,限制性更强,即对于ULs,您应该有addChild(LiEntity child);
公共布尔addChild(HtmlEntity-child);
}

html只是XML,因此使用DocumentBuilderFactory创建XML DOM文档,然后用html元素填充它,最后将其写入流或磁盘文件是一种合乎逻辑的方法。
或者使用内置的XSLT转换功能将XSLT表应用于现有的XML DOM对象或文件,以将其转换为HTML。

哪一个更好取决于您的具体要求。第二,初始设置需要做更多的工作,但灵活性和可重用性更高。

有两种方法可以实现这一点: 1) 使用ApacheVelocity模板将文件中的HTML标记与生成的数据合并,而不用担心使用纯代码构建HTML

2) 使用现有模板并使用JSOUP(一个HTML DOM操纵库)进行操纵

我考虑用例,例如为电子邮件生成HTML,甚至PDF生成。


如果需要纯生成,请尝试查看

它可能有助于@KamleshArya无第三方插件:)