FreeMarker模版访问XML文件
我这里写了一个简单的xml
<?xml version="1.0" encoding="UTF-8"?> <love> <siteName>爱美依商城</siteName> <siteURL name="url" value="https://www.bugkong.com" /> <siteFL> <FLA>分类A</FLA> <FLB>分类B</FLB> </siteFL> <siteFL> <FLA>分类C</FLA> <FLB>分类D</FLB> </siteFL> </love>
然后在控制器我们这样做
我这里只列出相关具体的控制器
@RequestMapping("/index5") public String init5(HttpServletRequest request, HttpServletResponse response,ModelMap model){ NodeModel nm = null; try { nm = NodeModel.parse(new File("workspace\\freemarker\\src\\main\\java\\LoveBN.xml")); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } model.addAttribute("compute",new CustomPageCounts()); model.addAttribute("doc",nm); return "aaa/index5"; }接下来我们就可以在我们的模版文件这样使用了
<#recurse doc>获得这个资源文件
<#macro love>love节点
${.node.siteName} 得到siteName的值
${.node.siteFL[0].FLA} 得到第一个siteFL子节点FLA的值
你还可以直接通过传递过来的变量doc来处理
${doc.love.siteFL[0].FLA}<br />
${doc.love.siteFL[2].FLB!"No mouse."}
你还可以将获得的节点进行遍历
<#list doc.love.siteFL as sfk>
${sfk.FLA}<br>
</#list>
完整的代码如下
<#recurse doc> <#macro love> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>freemarker-${.node.siteName}</title> </head> <body> ${doc.love.siteFL[0].FLA}<br /> ${doc.love.siteFL[2].FLB!"No mouse."}<br /> ${.node.siteFL[0].FLA}<br /> <br> <#list doc.love.siteFL as sfk> ${sfk.FLA}<br> </#list> </body> </html> </#macro>
爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情