private void WriteEscaped(string str) {
if (str == null)
return;
int lastIndex = 0;
for (int i=0; i<str.Length; i++) {
switch(str[i]) {
case '&':
InternalWrite(str.Substring(lastIndex, i-lastIndex));
InternalWrite("&");
lastIndex = i +1;
break;
case '<':
InternalWrite(str.Substring(lastIndex, i-lastIndex));
InternalWrite("<");
lastIndex = i +1;
break;
case '>':
InternalWrite(str.Substring(lastIndex, i-lastIndex));
InternalWrite(">");
lastIndex = i +1;
break;
case '"':
InternalWrite(str.Substring(lastIndex, i-lastIndex));
InternalWrite(""");
lastIndex = i +1;
break;
case '\'':
InternalWrite(str.Substring(lastIndex, i-lastIndex));
InternalWrite("'");
lastIndex = i +1;
break;
case (char)0xD:
InternalWrite(str.Substring(lastIndex, i-lastIndex));
InternalWrite("
");
lastIndex = i +1;
break;
case (char)0xA:
InternalWrite(str.Substring(lastIndex, i-lastIndex));
InternalWrite("
");
lastIndex = i +1;
break;
}
}
InternalWrite(str.Substring(lastIndex, str.Length-lastIndex));
}