public static String EscapeXML(String s, bool onlyASCII)
{
char[] cc = s.ToCharArray();
int len = cc.Length;
StringBuilder sb = new StringBuilder();
for (int k = 0; k < len; ++k) {
int c = cc[k];
switch (c) {
case '<':
sb.Append("<");
break;
case '>':
sb.Append(">");
break;
case '&':
sb.Append("&");
break;
case '"':
sb.Append(""");
break;
case '\'':
sb.Append("'");
break;
default:
if (IsValidCharacterValue(c)) {
if (onlyASCII && c > 127)
sb.Append("&#").Append(c).Append(';');
else
sb.Append((char)c);
}
break;
}
}
return sb.ToString();
}