不说话,只有代码
1. 要先导入FreeMaker的包freemaker-2.3.8.jar
2. 代码
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.HashMap; import java.util.Map; import freemarker.template.Configuration; import freemarker.template.DefaultObjectWrapper; import freemarker.template.Template; import freemarker.template.TemplateException; public class FreeMakerTemplate { public static void main(String[] args) throws IOException, TemplateException { /* 创建一个合适的configuration */ Configuration cfg = new Configuration(); // 加载配置文件 cfg.setDirectoryForTemplateLoading(new File( "src/study/freemaker/template")); // 指定如何查看数据模型 cfg.setObjectWrapper(new DefaultObjectWrapper()); /* 而以下代码你通常会在一个应用生命周期中执行多次 */ /* 获取或创建一个模版 */ Template template = cfg.getTemplate("test.ftl"); /* 创建一个数据模型Create a data model */ Map<String, Object> root = new HashMap<String, Object>(); root.put("root", "root"); Map<String, Object> elements = new HashMap<String, Object>(); root.put("elements", elements); elements.put("name", "king"); elements.put("age", "30"); elements.put("weight", "75kg"); elements.put("gender", "M"); /* 合并数据模型和模版 */ Writer out = new OutputStreamWriter(System.out);//打印到控制台 //生成到文件 Writer outFile = new OutputStreamWriter(new FileOutputStream("src/study/freemaker/template/test.xml"), "gb2312"); template.process(root, out); template.process(root, outFile); out.flush(); } }
test.ftl
<root name="${root}"> <name>${elements.name}</name> <age>${elements.age}</age> <weight>${elements.weight}</weight> <gender>${elements.gender}</gender> </root>
运行结果:
<root name="root">
<name>king</name>
<age>30</age>
<weight>75kg</weight>
<gender>M</gender>
</root>