> > > >You don't need to use a CDATA section for the message, you could use > >Transform.escapeTags for the message itself. In fact the best idea > >would be to use a version of Transform.escapeTags that tried > to escape > >tags, but if there were too many escapes (i.e. more than 4 > escapes) it > >aborts escaping and wraps the text in a CDATA section. > > That's an original idea. Do you have an implementation in mind? >
The trivial implementation is: static public String escapeTags(String input) { //Check if the string is null or zero length -- if so, return //what was sent in. if( input == null || input.length() == 0 ) { return input; } //Use a StringBuffer in lieu of String concatenation -- it is //much more efficient this way. StringBuffer buf = new StringBuffer(input.length() + 6); char ch = ' '; int replacementCount = 0; int len = input.length(); for(int i=0; i < len; i++) { if (replacementCount > 4) { //Abandon escaping buf.setLength(0); buf.append("<![CDATA["); appendEscapingCDATA(buf, input); buf.append("]]>"); return buf.toString(); } ch = input.charAt(i); if(ch == '<') { buf.append("<"); replacementCount++; } else if(ch == '>') { buf.append(">"); replacementCount++; } else { buf.append(ch); } } return buf.toString(); } (lack of compiler == lack of syntax checking == lack of testing ;) Shouldn't this method also escape ampersands (&) ? I know that it is called escapeTags so it does what it says. Also the current escapeTags method contains a mixture of tabs and spaces! Nicko --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]