+ sb.append(escapify(s));
+ }
+
+ public String escapify(String s) {
+ StringBuffer sb = new StringBuffer();
+ for(int i=0; i<s.length(); i++) {
+ char c = s.charAt(i);
+ switch(c) {
+ case '&': sb.append("&"); break;
+ case '<': sb.append("<"); break;
+ case '>': sb.append(">"); break;
+ case '\'': sb.append("'"); break;
+ case '\"': sb.append("""); break;
+ default:
+ if (c < 32 || c >= 127) {
+ sb.append("&#x" + Integer.toString((int)(c & 0xffff), 16) + ";");
+ } else {
+ sb.append(c);
+ }
+ }
+ }
+ return sb.toString();