MarkupTemplateEngine
MarkupTemplateEngine 是Groovy所有模版类中最强大的实现类。如类名所示,Markup是标记类的语法,用于XML,HTML等。
与其它模版不同的是,MarkupTemplateEngine 使用与其它模版不一样。
还记得前面我们学习过的StreamingMarkupBuilder和JsonBuilder所使用过的书写格式吗?MarkupTemplateEngine使用的书写方式几乎相同。
先看一个简单的例子:
输出结果:
通过这个简单的例子可以看到,输出了Markup格式的结果。事实上,这个模版就是Groovy DSL,都是合法的Groovy语法。
MarkupTemplateEngine提供了几个重要的功能:
模版语法
Markup格式类的组成都是由标签(tag)、标签属性(property)及内容(text)构成,标签可以包含子标签,这些都有对应的语法:
可见,每个方法名称就是标签名称,属性则使用键值对的方式,而文本则是其中一个参数,参数位置没有关系,会被自动识别;如果包含子节点,则使用闭包包含即可。
常用函数
学习XML对应类的时候,已经见到过StreamingMarkupBuilder中包含了一些方法用来生成对应的指令如XML头等,Markup模版引擎类提供了类似的指令方法:
* yieldUnescaped
会直接输出给定的语句,不转义其中的字符。
* yield
和上面相反,会转义特殊字符。
* head
这些HTML的标签方法会生成对应的标签。
* xmlDeclaration
方法会生成一个标准的XML文档头。
* comment
方法生成 HTML注释。
* newLine
生成一个新行。
模版文件
include.tpl:
执行代码如下:
模版文件提供了三种形式的导入指令:
* include template: 'include.tpl'
引入另一个模版文件
* include unescaped: 'include.txt'
原样引入文件,不转换任何字符
* include escaped: 'include.txt'
根据转换符号进行引入文件的转换
还有3个内置方法提供一样的功能:
* includeGroovy()
* includeEscaped()
* includeUnescaped()
配置项目
MarkupTemplateEngine允许使用配置来指定引擎的行为:
* declarationEncoding :
指定xmlDeclaration()方法输出的编码格式,缺省为不输出编码格式。
此时输出
不设置则输出为
* expandEmptyElements :
是否扩展空标签,缺省为false, 如果为真的时候则空标签用一对标签来表示,例如:
。
* useDoubleQuotes
是否使用双引号,缺省为 false, 属性值使用单引号包裹,为真则使用双引号包裹。
* newLineString
换行符,缺省使用系统属性line.separator,也就是\n。当设置了自定义的值,则使用自定义的值。
例如:对于
当newLineString = '
'时,输出
* autoEscape
是否自动转义,缺省为false。当设置为真的时候,传入的参数遇到转义符时则自动转义。
* autoIndent
是否自动缩进。缺省为假。当设置为真时,则按照节点的包含层次,使用 autoIndentString 规定的缩进符号进行缩进排版。
* autoIndentString
缩进字符串,缺省为4个空格。用于当autoIndent为真时的缩进排版。
* autoNewLine
设置是否自动换行,缺省为false,当为真时,则每个tag后自动换行。例如:
输出
如果为假则为:
* baseTemplateClass
* locale
这是本地化内容, 缺省使用宿主机的Local。
MarkupTemplateEngine 还有很多内容,所需篇幅很长,下节继续。
领取专属 10元无门槛券
私享最新 技术干货