FreeMarker入门 生成xml模板

第一次写这个,只是按着自己想的来写,没有什么思路。。。。

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值