FileWriter在Java中存在多个文件的问题

时间:2010-12-06 18:31:55

标签: java xml freemarker filewriter

我正在使用java和freemarker通过FTL(模板文件)和XML生成HTML文件。我在多个文件中得到了结果,但每个文件都包含整个结果。我希望每个文件都包含自己的结果。为了给你更多细节,看看我的java代码的这一部分:(解决方案应该很简单,但我找不到它)

static void freemarkerDo(Map datamodel, String template) throws Exception{
  try {
      File file = new File("Avis.xml");
      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
      DocumentBuilder db = dbf.newDocumentBuilder();
      Document doc = db.parse(file);
      doc.getDocumentElement().normalize();
      NodeList nodeLst = doc.getElementsByTagName("Avis");

      Configuration cfg = new Configuration();

      Template tpl = cfg.getTemplate(template);



      for (int s = 0; s < nodeLst.getLength(); s++) {

        Node fstNode = nodeLst.item(s);

        if (fstNode.getNodeType() == Node.ELEMENT_NODE) {

            Element fstElmnt = (Element) fstNode;
            NodeList flNmElmntLst = fstElmnt.getElementsByTagName("Filename");
            Element flNmElmnt = (Element) flNmElmntLst.item(0);
            NodeList flNm = flNmElmnt.getChildNodes();
            FileWriter writer = new FileWriter(((Node) flNm.item(0)).getNodeValue()+".html");

            try {
                tpl.process(datamodel, writer);
                }
            finally{
                writer.close();
                    }
                                                        }



      }
      } catch (Exception e) {
        e.printStackTrace();
      }

}

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我不知道这个方法做了什么或者设置了datamodel的位置,但是在我看来你传递的是整个数据模型,这样就可以解释为什么你在每个文件中都有整个数据模型。

tpl.process(datamodel, writer); // does what, with what?

调试代码时看到了什么?