关于-非法的xml字符

private static boolean isXMLCharacter(int c) {
       
         
if (c <= 0xD7FF) {
             
if (c >= 0x20return true;
             
else {
                  
if (c == ' 'return true;
                  
if (c == ' 'return true;
                  
if (c == ' 'return true;
                  
return false;
             }
         }

         
if (c < 0xE000return falseif (c <= 0xFFFDreturn true;
         
if (c < 0x10000return falseif (c <= 0x10FFFFreturn true;
       
         
return false;
     }

==================================

public class q {

private static boolean isXMLCharacter(int c) {
       
        
if (c <= 0xD7FF) {
            
if (c >= 0x20return true;
            
else {
                 
if (c == ' 'return true;
                 
if (c == ' 'return true;
                 
if (c == ' 'return true;
                 
return false;
            }
        }

        
if (c < 0xE000return falseif (c <= 0xFFFDreturn true;
        
if (c < 0x10000return falseif (c <= 0x10FFFFreturn 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");
   }
  
  
  
  
}

}
 
原文地址:https://www.cnblogs.com/lanzhi/p/6470695.html