我想用Java代碼創建HTML文檔,如何在不依賴第三方庫的情況下有效利用Java SE 1.7來實現該目標?創建HTML文檔
目標是不必手動將html字符串附加在一起,並獲得一些幫助保持html有效。
我想用Java代碼創建HTML文檔,如何在不依賴第三方庫的情況下有效利用Java SE 1.7來實現該目標?創建HTML文檔
目標是不必手動將html字符串附加在一起,並獲得一些幫助保持html有效。
HTML僅僅是XML,所以使用的DocumentBuilderFactory創建一個XML DOM文檔,然後用你的HTML元素填充它,最後寫出來流或磁盤文件是一個合乎邏輯的方式來做到這一點。
或者使用內置的XSLT轉換功能將XSLT工作表應用於現有的XML DOM對象或文件以將其轉換爲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);
}
有幾個方法可以解決這個: 1)使用Apache Velocity模板中產生的,而不是使用純粹的代碼
2擔心HTML結構與數據文件合併HTML標記)使用現有的模板和使用JSOUP操作(一個HTML DOM操作庫)
我認爲用例如爲電子郵件或甚至PDF生成生成HTML。
如果需要純代,嘗試尋找在https://code.google.com/p/gagawa/
它可能會幫助http://stackoverflow.com/questions/5936003/write-html-file-using-java –
@KamleshArya任何第三方插件:) –