freemaker转word xml注意事项

时间:2023-03-09 22:14:23
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;
}