如何使用java编辑,处理和保存FTL文件?

时间:2015-05-19 04:41:29

标签: java xml freemarker

我有一个代码可以解析XML文件,编辑它们并保存它们(使用dom)。现在,我有一些文件具有 .ftl 扩展名。我已设法用给定的答案处理ftl文件(使用freemarker模板配置),但是,我无法将编辑的xml保存为FTL。

所有这些都是用Java编写的。关于如何实现问题的保存方面的任何建议?

再次,我想用Java处理,编辑然后保存FTL文件。

我附加了处理ftl文件的代码。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.stream.JsonReader;

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

public class FTLReader {
      public static void main(String[] args) {

            //Freemarker configuration object
            Configuration cfg = new Configuration();
            try {
                //Load template from source folder
                Template template = cfg.getTemplate(filename);

                // Build the data-model

                Map<String,Object> data = new HashMap<String,Object>();
                JsonParser parser = new JsonParser();

                //write code to get answers
                Object obj = parser.parse(new FileReader("src/answers.txt"));
                JsonObject jsonObject = (JsonObject) obj; 
                data.put("element1", jsonObject.get("element1"));


                // Console output 
                Writer out = new OutputStreamWriter(System.out);
                template.process(data, out);
                out.flush();

                /*write code to edit and save the ftl file
                * 
                * 
                * 
                * 
                * */    

                // File output (the processed FTL file)
                Writer file = new FileWriter (new File("C:\\FTL_helloworld.txt"));
                template.process(data, file);
                file.flush();
                file.close();

            } catch (IOException e) {
                e.printStackTrace();
            } catch (TemplateException e) {
                e.printStackTrace();
            }
        }
}

1 个答案:

答案 0 :(得分:0)

在几次阅读你的问题和评论后,我可能终于明白了你的目标。所以,你必须&#34;补丁&#34;代码开头filename变量后面的文件(Template template = cfg.getTemplate(filename);)。 FTL文件基本上是一个文本文件,因此您可以逐行处理它。然后,您必须使用新文件内容重新初始化模板,即再次执行template = cfg.getTemplate(filename);