不说话,只有代码
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>