第一次写这个,只是按着自己想的来写,没有什么思路。。。。
https://blog.csdn.net/kangcool_sn/article/details/85096386
先建一个Person对象,也可以不用,只是为了封装数据好处理
public class Person {
private String name;
private String age;
private String birthday;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
创建工具类 这边把测试方法写在工具类中了,可以分离出去
import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class ObjectToXmlUtil
{
/**
*
* @param xmlPath xml的路径
* @param xmlName xml的名称
* @param code 数据编码格式
* @param dataMap 需要渲染到xml中的map数据
* @return xmlString
*/
public String createXmlFile(String xmlPath,String xmlName,String code, Map dataMap)
{
String result = "";
//得FreeMarker配置对象
// 创建Configuration对象
Configuration cfg = new Configuration();
//设置模板编码格式
cfg.setEncoding(Locale.getDefault(),code);
//得FreeMarker的关键对象---------模板
// 创建Template对象
Template template = null;
try
{
// 设置FreeMarker的模版文件位置
cfg.setClassForTemplateLoading(this.getClass(),"");
//cfg.setDirectoryForTemplateLoading(new File(xmlPath));
template = cfg.getTemplate(xmlName);
}
catch (IOException e1)
{
e1.printStackTrace();
}
template.setEncoding(code);
//String path = ServletActionContext.getServletContext().getRealPath("/");
/* File dir = new File(path + htmlPath);
if (!dir.exists())
{
dir.mkdirs();
} */
// File fileName = new java.io.File(path + htmlPath + htmlName);
//System.out.println("html file:" + fileName.getPath());
//Writer writer = null;
java.io.StringWriter w =new StringWriter();
try
{
// 生成xml
template.process(dataMap, w);
System.out.println(w.toString());
result = w.toString();
}
catch (TemplateException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return result;
}
public static void main(String args[]){
ObjectToXmlUtil t = new ObjectToXmlUtil();
Map map =t.demo();
t.createXmlFile("","Person.xml","gbk", map);
}
private Map demo(){
Person p =new Person();
p.setName("李四");
p.setAge("12");
p.setBirthday("20161201");
p.setSex("Y");
Map map = new HashMap();
map.put("t", p);
return map;
}
}
创建自己要生成的xml模板样式,将数据写过来
<?xml version="1.0" encoding="gbk"?>
<root id="" comment="">
<person>
<name>${t.name}</name>
<age>${t.age}</age>
<birthday>${t.birthday}</birthday>
<sex>${t.sex}</sex>
</person>
</root>
最后输出结果,转成你想要的xml文件即可:
<?xml version="1.0" encoding="gbk"?>
<root id="" comment="">
<person>
<name>李四</name>
<age>12</age>
<birthday>20161201</birthday>
<sex>Y</sex>
</person>
</root>
xml模板中带有多条的同样处理方法
以上纯属一个小白的一点心得,勿喷
https://blog.csdn.net/kangcool_sn/article/details/85069434