init
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
package com.eactive.eai.common.util;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class XmlUtil {
|
||||
|
||||
private static final String CDATA_START = "<![CDATA[";
|
||||
private static final String CDATA_END = "]]>";
|
||||
private static final String CDATA_PSEUDO_END = "]]>";
|
||||
private static final String CDATA_EMBEDED_END = CDATA_END + CDATA_PSEUDO_END + CDATA_START;
|
||||
private static final int CDATA_END_LEN = CDATA_END.length();
|
||||
|
||||
/**
|
||||
* This method takes a string which may contain HTML tags (ie,
|
||||
* <b>, <table>, etc) and replaces any
|
||||
* '<', '>' , '&' or '"'
|
||||
* characters with respective predefined entity references.
|
||||
*
|
||||
* @param input The text to be converted.
|
||||
* @return The input string with the special characters replaced.
|
||||
* */
|
||||
static public String escapeTags(final String input) {
|
||||
// Check if the string is null, zero length or devoid of special characters
|
||||
// if so, return what was sent in.
|
||||
|
||||
if(input == null
|
||||
|| input.length() == 0
|
||||
|| (input.indexOf('"') == -1 &&
|
||||
input.indexOf('&') == -1 &&
|
||||
input.indexOf('<') == -1 &&
|
||||
input.indexOf('>') == -1)) {
|
||||
return input;
|
||||
}
|
||||
|
||||
StringBuffer buf = new StringBuffer(input.length() + 6);
|
||||
char ch;
|
||||
|
||||
int len = input.length();
|
||||
for(int i=0; i < len; i++) {
|
||||
ch = input.charAt(i);
|
||||
if (ch > '>') {
|
||||
buf.append(ch);
|
||||
} else if(ch == '<') {
|
||||
buf.append("<");
|
||||
} else if(ch == '>') {
|
||||
buf.append(">");
|
||||
} else if(ch == '&') {
|
||||
buf.append("&");
|
||||
} else if(ch == '"') {
|
||||
buf.append(""");
|
||||
} else {
|
||||
buf.append(ch);
|
||||
}
|
||||
}
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensures that embeded CDEnd strings (]]>) are handled properly
|
||||
* within message, NDC and throwable tag text.
|
||||
*
|
||||
* @param buf StringBuffer holding the XML data to this point. The
|
||||
* initial CDStart (<![CDATA[) and final CDEnd (]]>) of the CDATA
|
||||
* section are the responsibility of the calling method.
|
||||
* @param str The String that is inserted into an existing CDATA Section within buf.
|
||||
* */
|
||||
static public void appendEscapingCDATA(final StringBuffer buf,
|
||||
final String str) {
|
||||
if (str != null) {
|
||||
int end = str.indexOf(CDATA_END);
|
||||
if (end < 0) {
|
||||
buf.append(str);
|
||||
} else {
|
||||
int start = 0;
|
||||
while (end > -1) {
|
||||
buf.append(str.substring(start, end));
|
||||
buf.append(CDATA_EMBEDED_END);
|
||||
start = end + CDATA_END_LEN;
|
||||
if (start < str.length()) {
|
||||
end = str.indexOf(CDATA_END, start);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
buf.append(str.substring(start));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user