如下的一个模板文件,如何写对应的代码(java),请知道的指点下
<?xml version="1.0" encoding="UTF-8"?>
<File>
<Head>
<FileLength>00001849</FileLength>
<FileTime>20130817112307</FileTime>
<KeyIndex>0</KeyIndex>
</Head>
<Body>
<#list Data as Data>
<Data>
<IMSI>${Data.IMSI}</IMSI>
<#list CardOperTypes as CardOperTypes>
<CardOperTypes>
<CardOperType CardOperTypeId="${CardOperTypes.CardOperTypeId}" CardOperTypeName="${CardOperTypes.CardOperTypeName}" />
<CardOperType CardOperTypeId="${CardOperTypes.CardOperTypeIdConvert}" CardOperTypeName="${CardOperTypes.CardOperTypeName}" />
</CardOperTypes>
</#list>
</Data>
</#list>
</Body>
</File>
问题补充:下面我写的测试类;把模板中的 <#list CardOperTypes as CardOperTypes>
<CardOperTypes>
<CardOperType CardOperTypeId="${CardOperTypes.CardOperTypeId}" CardOperTypeName="${CardOperTypes.CardOperTypeName}" />
<CardOperType CardOperTypeId="${CardOperTypes.CardOperTypeIdConvert}" CardOperTypeName="${CardOperTypes.CardOperTypeName}" />
</CardOperTypes>
</#list>
去掉是可以的,但加上就不行了,不知哪里有问题
public class Test {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
Configuration cfg = new Configuration();
File tpl = new File("D://work");//加载模板文件的目录
try {
cfg.setDirectoryForTemplateLoading(tpl);
Map params = getParams();
Template requestTemplate = cfg.getTemplate("1.xml");
StringWriter out = new StringWriter();
requestTemplate.process(params, out);
System.out.println(out.toString());
} catch (Exception e1) {
e1.printStackTrace();
}
}
private static Map getParams() {
Map params = new HashMap();
params.put("Head", head());
params.put("Quantity", 2);
params.put("Data", data());
return params;
}
private static List<Map> data() {
List<Map> data = new ArrayList<Map>();
for(int i=0;i<1;i++){
Map datadetail=new HashMap();
datadetail.put("IMSI","460030400011007");
datadetail.put("CARD", CardOperTypes());
data.add(datadetail);
}
return data;
}
private static List<Map> CardOperTypes() {
List<Map> CardOperTypes = new ArrayList<Map>();
/*for(int i=0;i<4;i++){
Map datadetail=new HashMap();
datadetail.put("CardOperType",map());
CardOperTypes.add(datadetail);
}*/
for(int i=0;i<1;i++){
Map datadetail=new HashMap();
datadetail.put("IMSIS","460030400011007");
CardOperTypes.add(datadetail);
}
return CardOperTypes;
}
private static Map head() {
Map head = new HashMap();
head.put("FileVersion", "010000");
return head;
}
}
相关推荐
这个“freeMarker模板文件附件.zip”压缩包包含了一些关键资源,便于学习者深入理解并实践FreeMarker模板语言的用法。 1. **FreeMarker模板语言基础** FreeMarker是基于模板的,它与Java代码分离,使得视图层的...
4. **加载模板**:使用 FreeMarker API 加载 .ftl 文件,并创建一个 Configuration 实例,配置模板目录。 5. **合并数据模型与模板**:创建一个 `Template` 实例,然后使用 `process()` 方法将数据模型与模板合并,...
本主题将深入探讨如何利用Freemarker模板和wkhtmltox工具来实现这一功能。 **Freemarker模板** 是一个强大的Java模板引擎,用于动态生成文本输出,如HTML、XML或PDF。它支持变量替换、控制结构(如if/else)和复杂...
1. **配置模板**:开发者定义一系列的Freemarker模板文件,每个模板对应一种或多种代码结构,如实体类、DAO接口、Service类等。 2. **设置数据模型**:根据需求,生成器会要求用户输入必要的参数,如数据库表名、...
本主题将探讨如何利用Freemarker模板生成PDF以及如何使用EasyPOI生成带有图片、水印和分页功能的Excel。 首先,让我们深入了解Freemarker。Freemarker是一个强大的模板引擎,它用于生成文本输出,如HTML、XML或PDF...
总结来说,Struts2与Freemarker的配置主要是围绕工程的环境搭建、Struts2的web.xml配置、struts.xml配置以及Freemarker模板的编写展开的。通过这种集成,开发者可以利用Struts2的强大控制逻辑和Freemarker的模板能力...
在本项目中,我们将利用FreeMarker模板语言和Spring Boot后端API接口来实现一个用户列表的查询功能。下面,我将详细讲解这个过程中的关键知识点。 1. **FreeMarker模板**: FreeMarker是一个Java模板引擎,它能够...
本示例关注的是如何使用FreeMarker模板引擎来实现这个功能,并且包含在Word文档中插入图片的能力。FreeMarker是一个强大的、轻量级的模板语言,常用于Java应用中的视图层渲染。 首先,理解FreeMarker的基本概念。...
总结来说,Java FreeMarker模板生成Word动态表格是通过结合FreeMarker模板引擎的灵活性和Apache POI的强大功能,来高效地创建和更新包含动态数据的Word文档,尤其适用于需要大量定制和自动化生成的场景。通过理解并...
FreeMarker是一个强大的、开源的模板引擎,主要用于生成动态HTML、...通过阅读手册,开发者可以深入理解FreeMarker的工作原理,并熟练掌握其使用方法,从而在实际项目中有效地利用FreeMarker模板语言API生成动态内容。
在这个"freemarker模板使用"的讨论中,我们将深入探讨Freemarker的核心概念、语法以及如何在实际项目中进行图片插入。 1. **核心概念**: - **模板(Template)**:Freemarker模板是包含固定文本和变量的文本文件...
通过Mapper接口和XML配置文件,开发者可以方便地编写和执行SQL,获取数据后传递给Freemarker模板进行渲染。 6. **Web开发框架集成** 在Java Web开发中,Spring MVC或Struts2等框架通常会与Freemarker集成,提供...
FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所...
《两种Freemarker模板路径设置方法详解》 在Spring MVC框架中,Freemarker作为一款强大的模板引擎,常被用于动态生成HTML页面。本篇文章将详细介绍两种设置Freemarker模板路径的方法,帮助开发者更好地理解和应用。...
在MyEclipse中配置Freemarker模板,可以实现快速生成常见的Java Web项目中的视图层代码,如动态页面。例如,你可以为不同的页面元素(如头部、导航栏、内容区域等)创建模板,并在需要的地方插入这些模板,使得代码...
- **分离视图和逻辑**: Freemarker模板与Java代码分离,使得开发人员可以专注于业务逻辑,而设计师可以专注于页面设计。 - **高性能**: Freemarker编译模板为高效的Java代码,执行效率高。 - **灵活性**: 支持...
然后,配置Freemarker模板的路径,创建一个`Template`对象,用以加载模板文件。 在模板文件中,我们可以设计好Word的布局,包括表格和图片的位置。使用`<#foreach>`标签,可以遍历数据模型中的列表,动态插入图片。...
**Freemarker模板引擎** Freemarker是一个强大的、开源的模板语言,常用于Java应用中的视图层。它的主要任务是将数据模型与HTML或者其他格式的模板结合,生成最终的输出。Freemarker的设计原则是让模板作者专注于...
2. **FreeMarker配置**: 在Java代码中,设置FreeMarker的配置,加载模板文件,并定义数据模型,该模型包含要填充到模板中的数据,比如图片路径。 3. **POI读取模板**: 使用Apache POI的`XWPFDocument`类打开模板文件...
这篇名为“初试FreeMarker模板的一些问题”的博客可能涵盖了在学习和使用FreeMarker过程中遇到的基础问题和解决方法。 1. **模板语言基础** FreeMarker使用模板语言来定义如何将数据模型渲染成可读的输出。模板由...