public static string toXml(string self)
{
StringBuilder s = null;
int len = self.Length;
for (int i=0; i<len; ++i)
{
int c = self[i];
if (c > '>')
{
if (s != null) s.Append((char)c);
}
else
{
string esc = m_xmlEsc[c];
if (esc != null && (c != '>' || i==0 || self[i-1] == ']'))
{
if (s == null)
{
s = new StringBuilder(len+12);
s.Append(self, 0, i);
}
s.Append(esc);
}
else if (s != null)
{
s.Append((char)c);
}
}
}
if (s == null) return self;
return s.ToString();
}