in src/main/java/org/apache/commons/scxml2/io/SCXMLWriter.java [301:344]
private static String escapeXML(final String str) {
if (str == null) {
return null;
}
// Make the writer an arbitrary bit larger than the source string
final int len = str.length();
final StringWriter stringWriter = new StringWriter(len + 8);
for (int i = 0; i < len; i++) {
final char c = str.charAt(i);
String entityName = null; // Look for XML 1.0 predefined entities
switch (c) {
case '"':
entityName = "quot";
break;
case '&':
entityName = "amp";
break;
case '<':
entityName = "lt";
break;
case '>':
entityName = "gt";
break;
default:
}
if (entityName == null) {
if (c > 0x7F) {
stringWriter.write("&#");
stringWriter.write(Integer.toString(c));
stringWriter.write(';');
} else {
stringWriter.write(c);
}
} else {
stringWriter.write('&');
stringWriter.write(entityName);
stringWriter.write(';');
}
}
return stringWriter.toString();
}