private
static
boolean
isXMLCharacter(
int
c) {
if (c <= 0xD7FF ) {
if (c >= 0x20 ) return true ;
else {
if (c == ' ' ) return true ;
if (c == ' ' ) return true ;
if (c == ' ' ) return true ;
return false ;
}
}
if (c < 0xE000 ) return false ; if (c <= 0xFFFD ) return true ;
if (c < 0x10000 ) return false ; if (c <= 0x10FFFF ) return true ;
return false ;
}
==================================
public class q {
private static boolean isXMLCharacter( int c) {
if (c <= 0xD7FF ) {
if (c >= 0x20 ) return true ;
else {
if (c == ' ' ) return true ;
if (c == ' ' ) return true ;
if (c == ' ' ) return true ;
return false ;
}
}
if (c < 0xE000 ) return false ; if (c <= 0xFFFD ) return true ;
if (c < 0x10000 ) return false ; if (c <= 0x10FFFF ) return true ;
return false ;
}
public static void checkCharacterData(String text) throws Exception {
if (text == null ) {
throw new Exception(
" A null is not a legal XML value "
);
}
// do check
char [] data = text.toCharArray();
for ( int i = 0 , len = data.length; i < len; i ++ ) {
char c = data[i];
int result = c;
// high surrogate
if (result >= 0xD800 && result <= 0xDBFF ) {
// Decode surrogate pair
int high = c;
try {
int low = text.charAt(i + 1 );
if (low < 0xDC00 || low > 0xDFFF ) {
throw new Exception(
" Bad surrogate pair "
);
}
// Algorithm defined in Unicode spec
result = (high - 0xD800 ) * 0x400 + (low - 0xDC00 ) + 0x10000 ;
i ++ ;
}
catch (IndexOutOfBoundsException e) {
throw new Exception(
" Bad surrogate pair "
);
}
}
if ( ! isXMLCharacter(result)) {
// Likely this character can't be easily displayed
// because it's a control so we use its hexadecimal
// representation in the reason.
throw new Exception( " 0x "
+ Integer.toHexString(result)
+ " is not a legal XML character " );
}
}
// If we got here, everything is OK
return ;
}
public static void main(String[] args) {
boolean flag = false ;
String s2 = " asd。 <br/>¥ " ;
for ( int i = 0 ;i < s2.replaceAll( " " , "" ).length();i ++ ){
int j = s2.replaceAll( " " , "" ).charAt(i);
flag = isXMLCharacter(j);
if ( ! flag)System.out.println( " sd " + ( char )j + " sd " );
}
}
}
if (c <= 0xD7FF ) {
if (c >= 0x20 ) return true ;
else {
if (c == ' ' ) return true ;
if (c == ' ' ) return true ;
if (c == ' ' ) return true ;
return false ;
}
}
if (c < 0xE000 ) return false ; if (c <= 0xFFFD ) return true ;
if (c < 0x10000 ) return false ; if (c <= 0x10FFFF ) return true ;
return false ;
}
==================================
public class q {
private static boolean isXMLCharacter( int c) {
if (c <= 0xD7FF ) {
if (c >= 0x20 ) return true ;
else {
if (c == ' ' ) return true ;
if (c == ' ' ) return true ;
if (c == ' ' ) return true ;
return false ;
}
}
if (c < 0xE000 ) return false ; if (c <= 0xFFFD ) return true ;
if (c < 0x10000 ) return false ; if (c <= 0x10FFFF ) return true ;
return false ;
}
public static void checkCharacterData(String text) throws Exception {
if (text == null ) {
throw new Exception(
" A null is not a legal XML value "
);
}
// do check
char [] data = text.toCharArray();
for ( int i = 0 , len = data.length; i < len; i ++ ) {
char c = data[i];
int result = c;
// high surrogate
if (result >= 0xD800 && result <= 0xDBFF ) {
// Decode surrogate pair
int high = c;
try {
int low = text.charAt(i + 1 );
if (low < 0xDC00 || low > 0xDFFF ) {
throw new Exception(
" Bad surrogate pair "
);
}
// Algorithm defined in Unicode spec
result = (high - 0xD800 ) * 0x400 + (low - 0xDC00 ) + 0x10000 ;
i ++ ;
}
catch (IndexOutOfBoundsException e) {
throw new Exception(
" Bad surrogate pair "
);
}
}
if ( ! isXMLCharacter(result)) {
// Likely this character can't be easily displayed
// because it's a control so we use its hexadecimal
// representation in the reason.
throw new Exception( " 0x "
+ Integer.toHexString(result)
+ " is not a legal XML character " );
}
}
// If we got here, everything is OK
return ;
}
public static void main(String[] args) {
boolean flag = false ;
String s2 = " asd。 <br/>¥ " ;
for ( int i = 0 ;i < s2.replaceAll( " " , "" ).length();i ++ ){
int j = s2.replaceAll( " " , "" ).charAt(i);
flag = isXMLCharacter(j);
if ( ! flag)System.out.println( " sd " + ( char )j + " sd " );
}
}
}