您的位置:首页 > 移动开发 > Android开发

android XML特殊字符处理

2014-10-24 10:30 225 查看
public class XMPPUtil
{
    /**
     * XML特殊字符变为转义字符
     *
     * @param string the string to escape.
     * @return the string with appropriate characters escaped.
     */
    public static String escapeXML(String string)
    {
        if (string == null)
        {
            return null;
        }
        char ch;
        int i = 0;
        int last = 0;
        char[] input = string.toCharArray();
        int len = input.length;
        StringBuilder out = new StringBuilder((int)(len * 1.3));
        for (; i < len; i++)
        {
            ch = input[i];
            if (ch > '>')
            {
            }
            else if (ch == '<')
            {
                if (i > last)
                {
                    out.append(input, last, i - last);
                }
                last = i + 1;
                out.append("<");
            }
            else if (ch == '>')
            {
                if (i > last)
                {
                    out.append(input, last, i - last);
                }
                last = i + 1;
                out.append(">");
            }
           
            else if (ch == '&')
            {
                if (i > last)
                {
                    out.append(input, last, i - last);
                }
                // Do nothing if the string is of the form ë (unicode value)
                if (!(len > i + 5 && input[i + 1] == '#' && Character.isDigit(input[i + 2])
                    && Character.isDigit(input[i + 3]) && Character.isDigit(input[i + 4]) && input[i + 5] == ';'))
                {
                    last = i + 1;
                    out.append("&");
                }
            }
            else if (ch == '"')
            {
                if (i > last)
                {
                    out.append(input, last, i - last);
                }
                last = i + 1;
                out.append(""");
            }
            else if (ch == '\'')
            {
                if (i > last)
                {
                    out.append(input, last, i - last);
                }
                last = i + 1;
                out.append("'");
            }
        }
        if (last == 0)
        {
            return string;
        }
        if (i > last)
        {
            out.append(input, last, i - last);
        }
        return out.toString();
    }
   
    /**
     * XMl转义字符变为特殊字符
     *
     * @param string
     * @return
     */
    public static String unescapeXML(String string)
    {
        return string.replace("&", "&")
            .replace(""", "\"")
            .replace("<", "<")
            .replace(">", ">")
            .replace("&apos", "'");
    }
}

public class XMPPUtil
{
    /**
     * XML特殊字符变为转义字符
     *
     * @param string the string to escape.
     * @return the string with appropriate characters escaped.
     */
    public static String escapeXML(String string)
    {
        if (string == null)
        {
            return null;
        }
        char ch;
        int i = 0;
        int last = 0;
        char[] input = string.toCharArray();
        int len = input.length;
        StringBuilder out = new StringBuilder((int)(len * 1.3));
        for (; i < len; i++)
        {
            ch = input[i];
            if (ch > '>')
            {
            }
            else if (ch == '<')
            {
                if (i > last)
                {
                    out.append(input, last, i - last);
                }
                last = i + 1;
                out.append("<");
            }
            else if (ch == '>')
            {
                if (i > last)
                {
                    out.append(input, last, i - last);
                }
                last = i + 1;
                out.append(">");
            }
           
            else if (ch == '&')
            {
                if (i > last)
                {
                    out.append(input, last, i - last);
                }
                // Do nothing if the string is of the form ë (unicode value)
                if (!(len > i + 5 && input[i + 1] == '#' && Character.isDigit(input[i + 2])
                    && Character.isDigit(input[i + 3]) && Character.isDigit(input[i + 4]) && input[i + 5] == ';'))
                {
                    last = i + 1;
                    out.append("&");
                }
            }
            else if (ch == '"')
            {
                if (i > last)
                {
                    out.append(input, last, i - last);
                }
                last = i + 1;
                out.append(""");
            }
            else if (ch == '\'')
            {
                if (i > last)
                {
                    out.append(input, last, i - last);
                }
                last = i + 1;
                out.append("'");
            }
        }
        if (last == 0)
        {
            return string;
        }
        if (i > last)
        {
            out.append(input, last, i - last);
        }
        return out.toString();
    }
   
    /**
     * XMl转义字符变为特殊字符
     *
     * @param string
     * @return
     */
    public static String unescapeXML(String string)
    {
        return string.replace("&", "&")
            .replace(""", "\"")
            .replace("<", "<")
            .replace(">", ">")
            .replace("&apos", "'");
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: