escapeXml function

String escapeXml(
  1. String text
)

Implementation

String escapeXml(String text) {
  final sb = StringBuffer();
  for (final rune in text.runes) {
    if (rune == 38) {
      sb.write('&');
    } else if (rune == 60) {
      sb.write('<');
    } else if (rune == 62) {
      sb.write('>');
    } else if (rune == 34) {
      sb.write('"');
    } else if (rune == 39) {
      sb.write(''');
    } else if ((rune >= 0x00 && rune <= 0x08) ||
        rune == 0x0B ||
        rune == 0x0C ||
        (rune >= 0x0E && rune <= 0x1F) ||
        (rune >= 0x7F && rune <= 0x9F)) {
      sb.write(' ');
    } else if (rune >= 0x09 && rune <= 0x0A) {
      sb.writeCharCode(rune);
    } else if (rune == 0x0D) {
      sb.writeCharCode(rune);
    } else if (rune >= 0x20 && rune <= 0x7E) {
      sb.writeCharCode(rune);
    } else {
      sb.write('&#x${rune.toRadixString(16).toUpperCase()};');
    }
  }
  return sb.toString();
}