我需要在转换为XML文件之前转义XML字符串。我是这样做的:
Java代码:
public static final String[][] XML_ENTITIES = {
{"&","&"},{">",">"},{"<","<","'","'","\"","""}
};
public static String escape(String str){
for(int i=0;i<XML_ENTITIES.length;i++){
String name = XML_ENTITIES[i][0];
String value = XML_ENTITIES[i][1];
int idx = str.indexOf(name);
if(idx > -1){
str = str.replace(name, value);
}
}
return str;
}
它工作正常但在某些情况下失败。
示例:
escape(">>,,a,a<<")
输出:
>>,,a,a<<
失败案例:
escape("&>,,a,a<<")
输出:
&amp;>,,a,a<<
如果xml字符串包含&
,则无需转义字符串中的&
字符。如果我unescape
字符串并且逃脱它工作正常。如果没有失误,我该怎么办?
答案 0 :(得分:0)
public static final String[][] XML_ENTITIES = {
{"&(?!amp;)","&"},{">",">"},{"<","<","'","'","\"","""}
};
public static String escape(String str){
for(int i=0;i<XML_ENTITIES.length;i++){
String name = XML_ENTITIES[i][0];
String value = XML_ENTITIES[i][1];
int idx = str.indexOf(name);
if(idx > -1){
str = str.replaceAll(name, value);
}
}
return str;
}