【发布时间】:2015-07-30 18:22:52
【问题描述】:
我有一个代码可以解析 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();
}
}
}
【问题讨论】:
-
我们需要看一些代码。您可以通过写入某种类型的 OutputStream 来保存文件。但在我们看到您所做的工作之前,很难提出更具体的解决方案。
-
好的。添加了我用于处理 ftl 文件的代码。目前,作为输出,我得到一个处理过的 FTL 文件。我正在尝试编辑这个处理过的文件(基本上是一个 XML)并将其另存为 FTL 文件。
-
另外,想补充一点,我要处理的文件基本上是带有freemarker节点的xml文件
-
我不明白你想要什么。如果我们澄清术语,也许会有所帮助。处理模板意味着使用模板生成输出,并且输出中将不再包含 FTL 构造。正确的?那么“编辑”模板是什么意思?你编辑的是什么?作为 XML? FTL 不是 XML,但精心编写的模板可以。 (处理的)输出可能是 XML,您可以将其视为任何其他 XML。
-
为问题中的歧义道歉。我有一个用于生成 xml 文件的 FTL 文件。我处理这个 FTL 文件以生成相应的 XML 文件。之后,我对生成的 XML 文件进行了一些更改。完成后,我想更改我的 FTL 文件,以便如果我再次处理它,生成的 XML 文件应该反映我所做的更改。
标签: java xml freemarker