首页 > 代码库 > freemaker转word xml注意事项

freemaker转word xml注意事项

 

java类字符串变量如果含有以下2种字符: &和  <,必须转义否则转化将失败。

其中:

&替换成 &amp;

<替换成 &lt;

因为一些怪字符数据库存储时已转义了,从数据读取必须先转义,然后再进行替换。

 

 

下面是五个在XML文件中预定义好的实体:

&lt; < 小于号
&gt; > 大于号
&amp; & 和
&apos; ’单引号
&quot; " 双引号


注意: 只有"<" 字符和"&"字符对于XML来说是严格禁止使用的。剩下的都是合法的,为了减少出错,使用实体是个好习惯。

 

转义函数: 对变量进行转义。

public String formatString(Object obj){    String str="";    if(obj!=null){str= obj.toString();};        if(!StringUtils.isBlank(str)){        String escaped = org.apache.commons.lang.StringEscapeUtils.unescapeHtml(str);        if(escaped.indexOf("&")>=0){            escaped = escaped.replace("&", "&");        }        else if(escaped.indexOf("<")>=0){            escaped = escaped.replace("<", "<");        }        return escaped;    }else{                    return " ";    }        }

 

 

用法: 

i = 1;for (MonographVo vo : monographVos) {            String monographname = formatString(vo.getMonographname());            dataMap.put("b8a" + i,monographname);            String publisher = formatString(vo.getPublisher());            dataMap.put("b8b" + i,publisher);            String yearandpage=formatString(vo.getYearandpage());            dataMap.put("b8c" + i,yearandpage);            String allauthor=formatString(vo.getAllauthor());            dataMap.put("b8d" + i,allauthor);            ++i;  }