准备
1.准备依赖包
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>
2. freemarker模板
<?xml version="1.0" encoding="UTF-8"?>
<Message>
<Version>${version!}</Version>
<Token>${token!}</Token>
<From>${from!}</From>
<To>${to!}</To>
<Type>${type!}</Type>
<Seq>${seq!}</Seq>
<Body>
<Operation order="${order!}" name="${name!}">
<SDO_User>
<UserName>${userName!}</UserName>
<Pwd>${pwd!}</Pwd>
</SDO_User >
</Operation>
</Body>
</Message>
3.工具类
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
* Created by sugar on 2021/9/15.
*/
public class Test {
/* * 生成xml
*
* @throws IOException
* @throws TemplateException
*/
public static void main(String[] args) throws IOException, TemplateException {
//创建配置类
Configuration configuration = new Configuration(Configuration.getVersion());
String classpath = new Test().getClass().getResource("/templates/").getPath();
//设置模板路径
configuration.setDirectoryForTemplateLoading(new File(classpath));
//设置字符集
configuration.setDefaultEncoding("UTF-8");
//加载模板
Template template = configuration.getTemplate("login.ftl");
//数据模型
Map map = loginParams();
//静态化
String content = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
//静态化内容
System.out.println(content);
}
/**
* 登录
* 组装参数
*
* @return
*/
public static Map loginParams() {
Map map = new HashMap();
map.put("version","1.0");
map.put("token","");
map.put("seq","1");
map.put("type","REQUEST");
map.put("from","127.0.0.1");
map.put("to","127.0.0.1");
map.put("order","1");
map.put("name","Login");
map.put("userName","admin");
map.put("pwd","12345678");
return map;
}
}
运行结果
<?xml version="1.0" encoding="UTF-8"?>
<Message>
<Version>1.0</Version>
<Token></Token>
<From>127.0.0.1</From>
<To>127.0.0.1</To>
<Type>REQUEST</Type>
<Seq>1</Seq>
<Body>
<Operation order="1" name="Login">
<SDO_User>
<UserName>admin</UserName>
<Pwd>12345678</Pwd>
</SDO_User >
</Operation>
</Body>
</Message>