package jp.gr.xml.relax.xml; /** * UXML * * @since Jan. 29, 2000 * @version Feb. 24, 2001 * @author ASAMI, Tomoharu (asami@zeomtech.com) */ public final class UXML { public static String escape(String string) { if (string.indexOf('<') == -1 && string.indexOf('>') == -1 && string.indexOf('&') == -1 && string.indexOf('"') == -1 && string.indexOf('\'') == -1) { return (string); } StringBuffer buffer = new StringBuffer(); int size = string.length(); for (int i = 0;i < size;i++) { char c = string.charAt(i); if (c == '<') { buffer.append("<"); } else if (c == '>') { buffer.append(">"); } else if (c == '&') { buffer.append("&"); } else if (c == '"') { buffer.append("""); } else if (c == '\'') { buffer.append("'"); } else { buffer.append(c); } } return (new String(buffer)); } public static String escapeEntityQuot(String string) { if (string.indexOf('%') == -1 && string.indexOf('&') == -1 && string.indexOf('"') == -1) { return (string); } StringBuffer buffer = new StringBuffer(); int size = string.length(); for (int i = 0;i < size;i++) { char c = string.charAt(i); if (c == '%') { buffer.append("&---;"); } else if (c == '&') { buffer.append("&"); } else if (c == '"') { buffer.append("""); } else { buffer.append(c); } } return (new String(buffer)); } public static String escapeEntityApos(String string) { if (string.indexOf('%') == -1 && string.indexOf('&') == -1 && string.indexOf('\'') == -1) { return (string); } StringBuffer buffer = new StringBuffer(); int size = string.length(); for (int i = 0;i < size;i++) { char c = string.charAt(i); if (c == '%') { buffer.append("%"); } else if (c == '&') { buffer.append("&"); } else if (c == '\'') { buffer.append("'"); } else { buffer.append(c); } } return (new String(buffer)); } public static String escapeAttrQuot(String string) { if (string.indexOf('<') == -1 && string.indexOf('&') == -1 && string.indexOf('"') == -1) { return (string); } StringBuffer buffer = new StringBuffer(); int size = string.length(); for (int i = 0;i < size;i++) { char c = string.charAt(i); if (c == '<') { buffer.append("<"); } else if (c == '&') { buffer.append("&"); } else if (c == '"') { buffer.append("""); } else { buffer.append(c); } } return (new String(buffer)); } public static String escapeAttrApos(String string) { if (string.indexOf('<') == -1 && string.indexOf('&') == -1 && string.indexOf('\'') == -1) { return (string); } StringBuffer buffer = new StringBuffer(); int size = string.length(); for (int i = 0;i < size;i++) { char c = string.charAt(i); if (c == '<') { buffer.append("<"); } else if (c == '&') { buffer.append("&"); } else if (c == '\'') { buffer.append("'"); } else { buffer.append(c); } } return (new String(buffer)); } public static String escapeSystemQuot(String string) { if (string.indexOf('"') == -1) { return (string); } StringBuffer buffer = new StringBuffer(); int size = string.length(); for (int i = 0;i < size;i++) { char c = string.charAt(i); if (c == '"') { buffer.append("""); } else { buffer.append(c); } } return (new String(buffer)); } public static String escapeSystemApos(String string) { if (string.indexOf('\'') == -1) { return (string); } StringBuffer buffer = new StringBuffer(); int size = string.length(); for (int i = 0;i < size;i++) { char c = string.charAt(i); if (c == '\'') { buffer.append("'"); } else { buffer.append(c); } } return (new String(buffer)); } public static String escapeCharData(String string) { if (string.indexOf('<') == -1 && string.indexOf('&') == -1 && string.indexOf("]]>") == -1) { return (string); } StringBuffer buffer = new StringBuffer(); int nBrackets = 0; int size = string.length(); for (int i = 0;i < size;i++) { char c = string.charAt(i); if (c == '<') { buffer.append("<"); } else if (c == '&') { buffer.append("&"); } else if (c == '>' && nBrackets >= 2) { buffer.append(">"); } else { buffer.append(c); } if (c == ']') { nBrackets++; } else { nBrackets = 0; } } return (new String(buffer)); } }