一般,我们要求上游传xml格式字符串时直接给转义好,或者允许含特殊字符的节点增加CDATA包围,但是总有那么一些管杀不管埋的伙伴,你能不能解析是你的事。
所以,这里我们将xml串中指定skuName节点里面排除一下,其实我是解析不了的时候才调这个重新转义一遍的,一般不走这里,链路不要长。
public static String replaceTag(String xml,String tagName){
String tagF = "<"+tagName+">";
String tagB = "</"+tagName+">";
String[] a = xml.split(tagF);
int indx = 0;
StringBuilder builder = new StringBuilder();
for (int i=0;i<a.length;i++){
indx = a[i].indexOf(tagB);
if(a[i].indexOf(tagB)>-1){
builder.append(a[i].substring(0,indx).replaceAll("&","&").replaceAll("<","<")).append(a[i].substring(indx));//大于号是没事的
}else {
builder.append(a[i]);
}
if(i<a.length-1){
builder.append(tagF);
}
}
return builder.toString();
网友评论