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", "'");
}
}