StringUtils escape xml/json

This commit is contained in:
Arndt Brenschede 2019-11-02 18:27:32 +01:00
parent 3170f031cc
commit f59cbbb5ad
2 changed files with 64 additions and 2 deletions

View file

@ -5,12 +5,18 @@ package btools.util;
*/
public class StringUtils
{
private static char[] xmlChr = new char[] { '&', '<', '>', '\'', '"', '\t', '\n', '\r' };
private static String[] xmlEsc = new String[]{ "&amp;", "&lt;", "&gt;", "&apos;", "&quot;", "&#x9;", "&#xA;", "&#xD;" };
private static char[] jsnChr = new char[] { '\'', '"', '\\', '/' };
private static String[] jsnEsc = new String[]{ "\\'", "\\\"", "\\\\", "\\/" };
/**
* Escape a literal to put into a json document
*/
public static String escapeJson( String s )
{
return s;
return escape( s, jsnChr, jsnEsc );
}
/**
@ -18,7 +24,34 @@ public class StringUtils
*/
public static String escapeXml10( String s )
{
return s;
return escape( s, xmlChr, xmlEsc );
}
private static String escape( String s, char[] chr, String[] esc )
{
StringBuilder sb = null;
for( int i=0; i<s.length(); i++ )
{
char c = s.charAt( i );
int j = 0;
while( j<chr.length )
{
if (c == chr[j])
{
if ( sb == null )
{
sb = new StringBuilder( s.substring( 0, i ) );
}
sb.append( esc[j] );
break;
}
j++;
}
if ( sb != null && j==chr.length )
{
sb.append( c );
}
}
return sb == null ? s : sb.toString();
}
}