2012年2月21日

使用 Groovy 的 MarkupBuilder 輸出 XML/HTML/XHTML 原始碼

Groovy 可以很容易設計 Builders/DSL,在 Java 程式要輸出 XML 資料,需要用到 SAS 等複雜的函式庫,這使得許多開發人員都用偷吃步的方法,像是:

System.out.println("<root><data>something</data></root>");

但是遇到複雜的資料結構,以及需要處理 Escape Characters 時,就很容易不斷踩到地雷。

當 Java 開發者,開始改用 Groovy 讓軟體開發工作更敏捷,就不能錯過 MarkupBuilder。

Groovy 提供許多種 Builder,基本上這就是一種 DSL(Domain-Specific Languages),讓開發者可以使用更簡單易懂的程式語法,來解決特定的用途。

而 MarkupBuilder 就是產生 XML 專用的 Groovy Builder,以下有關 MarkupBuilder 的文件,可以看到 Groovy 如何輕鬆地處理 XML 產生的工作。

如果,我們要使用 MarkupBuilder 輸出 HTML/XHTML,則只需要在加上一些設定:
  • html.doubleQuotes = true
    屬性使用慣用的雙引號,例如 class="icons"。
  • html.expandEmptyElements = true
    讓標籤成對顯示。
  • html.omitEmptyAttributes = false
    不要移除沒有值的屬性。
  • html.omitNullAttributes = false
    不要移除值為 NULL 的屬性。

另外,mkp.yield 與 mkp.yieldUnescaped 是特殊的用法。當遇到某些內容需要直接輸出,而不要被包含在子標籤中,就可以利用 yield;而 yieldUnescaped 則是直接輸出未經過 escape 處理的內容。


沒有留言:

張貼留言

lyhcode by lyhcode
歡迎轉載,請務必註明出處!