freemaker 遍历list嵌套map

本文介绍如何使用Freemarker模板引擎将Java集合数据转换为XML格式。具体实现包括定义数据结构、设置模板语法及生成目标XML文件的过程。文中通过实例展示了List<Map<String, Object>>类型数据的处理方法。
有这样一个数据结构List<Map<String, Object>> items = ...,需求是将这个List中的数据映射到一个xml文件中。技术用到freemaker。使用freemaker的目的就是使得数据和数据的展现形式分离。

1.程序如下:

List<Map<String, Object>> items = ...
Map<String, Object> root = new HashMap<String, Object>();
root.put("taskId", taskId + "");
root.put("items", items);
root.put("tasks", tasks);

java.io.StringWriter w = new StringWriter();
temp.process(root, w);


2.模板如下:
<?xml version="1.0" encoding="utf-8" ?>
<function id="${taskId}" name="default" desc="默认配置文件">
<#if items?size != 0>
<#list items as item>
<item key="${item["ITEMKEY"]}" value="${item["ITEMNAME"]}" desc="${item["ITEMDESC"]?if_exists}" />
</#list>
</#if>
<#list tasks as task>
<component id="${task["PROGRAMID"]}" name="${task["TASKNAME"]}" desc="${task["TASKNAME"]?if_exists}">
<#if task["items"]?size != 0>
<#list task["items"] as item>
<item key="${item["ITEMKEY"]}" value="${item["ITEMNAME"]}" desc="${item["ITEMDESC"]?if_exists}" />
</#list>
</#if>
</component>
</#list>
</function>


3.生成的xml文件按如下:

<?xml version="1.0" encoding="utf-8" ?>
<function id="8001" name="default" desc="默认配置文件">
<item key="sender" value="dy.cn" desc="发件人姓名" />
<item key="server" value="mail.n" desc="服务器地址" />
<item key="user" value="n" desc="用户名" />
<item key="password" value="n" desc="密码" />
<item key="subject" value="警" desc="题" />
<item key="receiverlist" value=""
desc="" />
<item key="defaultproduct" value="1" desc="组" />
<item key="mobilelist" value="13812345678" desc="表" />

<component id="GatewayStateRule" name="GatewayStateRule"
desc="规则">
<item key="duration" value="600" desc="时长" />
<item key="mode" value="1,2" desc="邮件" />
<item key="times" value="3" desc="数" />
<item key="interval" value="3" desc="报" />
<item key="message" value="信息" />
<item key="alertedtimes" value="0" desc="数" />
<item key="lastalerttime" value="1978-1-1 00:00:00" desc="间" />
</component>
</function>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值