-1

在转换为 XML 文件之前,我需要转义 XML 字符串。我这样做:

Java 代码:

public static final String[][] XML_ENTITIES = {
    {"&","&amp;"},{">","&gt;"},{"<","&lt;","'","&apos;","\"","&quot;"}
};

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<<")

输出:

&gt;&gt;,,a,a&lt;&lt;

失败案例:

escape("&amp;>,,a,a<<")

输出:

&amp;amp;&gt;,,a,a&lt;&lt;

如果一个xml字符串包含&amp;不需要转义的&字符串中的字符。如果我unescape将字符串转义并进行转义,则效果很好。我怎么能不转义?

4

1 回答 1

0
public static final String[][] XML_ENTITIES = {
    {"&(?!amp;)","&amp;"},{">","&gt;"},{"<","&lt;","'","&apos;","\"","&quot;"}
};

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;
}
于 2012-10-13T06:44:08.130 回答