freemaker转word xml注意事项
java类字符串变量如果含有以下2种字符: &和 <,必须转义否则转化将失败。
其中:
&替换成 &
<替换成 <
因为一些怪字符数据库存储时已转义了,从数据读取必须先转义,然后再进行替换。
下面是五个在XML文件中预定义好的实体:
< < 小于号
> > 大于号
& & 和
' ’单引号
" " 双引号
注意: 只有"<" 字符和"&"字符对于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; }