Java 基础三:使用Velocity模板生成 xml
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。
现在我们就来看这个小例子:
1. 建立一个Velocity模板,以vm结尾,例子中模板文件为TaxReportXml.vm,内容如下:
<?xml version="1.0" encoding="utf-8"?> <html> <head></head> <body> HELLO! $name,Welcome to velocity! </body> </html>
$name 为需要程序传入的参数。
2. 以下为 velocityTest的代码:
package velocity; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.text.MessageFormat; import org.apache.velocity.Template; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.VelocityEngine; import org.joda.time.DateTime; public class VelocityTest { /** * @param args */ public static void main(String[] args) { //得到VelocityEngine VelocityEngine ve = new VelocityEngine(); //得到模板文件 Template template = ve.getTemplate("/src/velocity/TaxReportXml.vm", "UTF-8"); VelocityContext context = new VelocityContext(); //传入参数 context.put("name", "jacky"); try { //生成xml FileWriter fileWriter = getFileWriter("velocity_test.xml"); //调用merge方法传入context template.merge(context, fileWriter); fileWriter.flush(); fileWriter.close(); } catch (IOException e) { e.printStackTrace(); } } private static FileWriter getFileWriter(String fileName) throws IOException { String fullPath = MessageFormat.format("{1}{0}{2}", File.separator, "d://", fileName); System.out.println("fileName = " + fullPath); File outputFile = new File(fullPath); return new FileWriter(outputFile); } }
看一下运行结果,在d:下的velocity_test.xml中:
<?xml version="1.0" encoding="utf-8"?> <html> <head></head> <body> HELLO! jacky,Welcome to velocity! </body> </html>
参数已经传到xml里了,很简单吧