2014-02-07 129 views
1

我想用Java代碼創建HTML文檔,如何在不依賴第三方庫的情況下有效利用Java SE 1.7來實現該目標?創建HTML文檔

目標是不必手動將html字符串附加在一起,並獲得一些幫助保持html有效。

+0

它可能會幫助http://stackoverflow.com/questions/5936003/write-html-file-using-java –

+0

@KamleshArya任何第三方插件:) –

回答

3

HTML僅僅是XML,所以使用的DocumentBuilderFactory創建一個XML DOM文檔,然後用你的HTML元素填充它,最後寫出來流或磁盤文件是一個合乎邏輯的方式來做到這一點。
或者使用內置的XSLT轉換功能將XSLT工作表應用於現有的XML DOM對象或文件以將其轉換爲HTML。
哪個更好取決於您的確切要求。其次,開始時需要做更多的工作,但要更加靈活和可重用。

0

創建一個基本抽象類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); 
} 
0

有幾個方法可以解決這個: 1)使用Apache Velocity模板中產生的,而不是使用純粹的代碼

2擔心HTML結構與數據文件合併HTML標記)使用現有的模板和使用JSOUP操作(一個HTML DOM操作庫)

我認爲用例如爲電子郵件或甚至PDF生成生成HTML。

如果需要純代,嘗試尋找在https://code.google.com/p/gagawa/