使用freemarker生成xml模板
来源:互联网 发布:淘宝店铺的权重 编辑:程序博客网 时间:2024/04/30 15:57
今天在java交流群里有个人问我如何用freemarker生成xml模板文件,可以手动配置参数,于是我到网上百度了一下。发现有一位同行的博文写的很nice,于是我就照着他的代码敲了一遍,最后实现了,本想贴出他的uri的,但是找不到了。网上这样的例子很多,大家可以自己到网上看看,我的建议是一个问题多看几个解决方案,这样才能找到正确的或者是最优解。
其实要实现的功能就是简单的将红框中的内容简单替换
下面是java代码:
package createxml;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.Writer;import java.util.HashMap;import java.util.Map;import freemarker.template.Configuration;import freemarker.template.Template;import freemarker.template.TemplateException; public class XMLTest { private Configuration configuration = null; public XMLTest(){ configuration = new Configuration(); configuration.setDefaultEncoding("UTF-8"); } public static void main(String[] args) { XMLTest test = new XMLTest(); test.createWord(); } public void createWord(){ Map<String,Object> dataMap=new HashMap<String,Object>(); getData(dataMap); configuration.setClassForTemplateLoading(this.getClass(), "/createxml"); //FTL文件所存在的位置,我的只能放在与java相同的包下 Template t=null; try { t = configuration.getTemplate("xmltemp.ftl"); //文件名 } catch (IOException e) { e.printStackTrace(); } File outFile = new File("G:/outFilessa"+Math.random()*10000+".xml"); //生成文件的路径 Writer out = null; try { out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile))); } catch (FileNotFoundException e1) { e1.printStackTrace(); } try { t.process(dataMap, out); } catch (TemplateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } //这里赋值的时候需要注意,xml中需要的数据你必须提供给它,不然会报找不到某元素错的. private void getData(Map<String, Object> dataMap) { dataMap.put("domaintype", "mytype"); } }然后是模板文件:
<domain type='${domaintype}'> <name>bjsxtvm03</name><memory unit='KiB'>1048576</memory><currentMemory unit='KiB'>1048576</currentMemory><vcpu placement='static'>1</vcpu><os><type arch='x86_64' machine='rhel6.6.0'>hvm</type><boot dev='hd'/></os><features><acpi/><apic/><pae/></features><clock offset='utc'/><on_poweroff>destroy</on_poweroff><on_reboot>restart</on_reboot><on_crash>restart</on_crash><devices><emulator>/usr/libexec/qemu-kvm</emulator><disk type='file' device='disk'><driver name='qemu' type='qcow2' cache='none'/><source file='/kvmtest/centos-6.6-04.qcow2'/><target dev='vda' bus='virtio'/><address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/></disk><disk type='block' device='cdrom'><driver name='qemu' type='raw'/><target dev='hdc' bus='ide'/><readonly/><address type='drive' controller='0' bus='1' target='0' unit='0'/></disk><controller type='usb' index='0' model='ich9-ehci1'><address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x7'/></controller><controller type='usb' index='0' model='ich9-uhci1'><master startport='0'/><address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0' multifunction='on'/></controller><controller type='usb' index='0' model='ich9-uhci2'><master startport='2'/><address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x1'/></controller><controller type='usb' index='0' model='ich9-uhci3'><master startport='4'/><address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x2'/></controller> <controller type='ide' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller><interface type='network'><source network='default'/><model type='virtio'/><address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/></interface><serial type='pty'><target port='0'/></serial><console type='pty'><target type='serial' port='0'/></console><input type='tablet' bus='usb'/><input type='mouse' bus='ps2'/><graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'><listen type='address' address='0.0.0.0'/></graphics><video><model type='cirrus' vram='9216' heads='1'/><address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/></video><memballoon model='virtio'><address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/></memballoon></devices></domain>这里要说明几点的是:
1,我自己测试的时候只能将模板文件放在java的包下,也就是和java同一个地方。
1 0
- 使用freemarker生成xml模板
- FreeMarker入门 生成xml模板
- 使用freemarker模板生成pdf
- 使用FreeMarker生成xml字符串
- 使用freemarker生成XML字符串
- 使用freemarker模板生成文件主要配置
- java 使用freemarker 生成word模板
- java使用 freemarker 模板生成word文件
- 使用Freemarker模板生成JAVA代码
- 在java 用xml模板通过freemarker生成word文档
- freemarker 模板生成 文件
- 使用模板生成xml格式
- 使用FreeMarker模板生成java代码的例子
- Flying-Saucer使用HTML或者FTL(Freemarker模板)生成PDF
- freemarker自动生成代码模板
- freemarker模板生成word文件
- FreeMarker模板使用
- freemarker layout 模板使用
- CodeForces 653 A. Bear and Three Balls
- #码神学习#第一天
- 光线控股猫眼 改变不了猫眼的宿命
- 进度条
- 设计模式 - 设计模式概述
- 使用freemarker生成xml模板
- 非农户口迁回原籍所需要的材料
- 通用型线程池框架 C++
- LeetCode 047 Permutations II
- React Native之底层源码分析篇
- 统计字符串中重复的字符个数并输出
- Amabri 2.1安装HDP2.3.2 之 一、HDP介绍
- JMX之MBean介绍
- iOS 数据库篇1—SQLite简单介绍