import java.util.regex.*;Pattern p = Pattern.compile("[\x00-\x09\x0b\x0c\x0e-\x19]");
Matcher m = p.matcher(YourxmlStringBuffer);
String nString = m.replaceAll("");

解决方案 »

  1.   

    xml:base属性值的合法字符集和XML一样,都是[Unicode]。但是,有些Unicode字符不允许出现在URI引用(URI Reference)中。因此,处理器必须对这些字符进行编码和转义处理,以得到一个合法的URI引用。
    不允许在URI引用中出现的字符包括:所有的非ASCII字符,以及在[IETF RFC 2396]2.4节列出的字符中去掉 “#”、“%”和方括号符号后剩下的符号。必须按照下面的方式对这些非法字符进行转义处理:1. 将每个非法字符转换为UTF-8格式[IETF RFC 2279](UTF-8用一个或多个字节来表示原来的字符)。2. 对于每个与非法字符相应的字节[译注//每个非法字符转换为UTF-8格式后,有一个或多个与它相应的字节],按照URI转义操作机制对它进行转义(也就是说,转换为%HH形式,这里HH是字节值的十六进制记法)。3. 用最终的字符序列来替换原来的字符。
      

  2.   

    可用JDom中的函数做判断啊!
    char ch;//ch即是你要判断的字符。
    org.jdom.Verifier.isXMLCharacter(ch)
    如果反回True就可以在xml中用的。很easy.
      

  3.   

    我后来自己想了个笨办法,
    String line:需要过滤的字符串
          try{
            byte[] bytes = line.getBytes("GBK");
            for (int i = 0; i < bytes.length; i++) {
                if (bytes[i] > 0 && bytes[i] < 32)
                bytes[i] = 32;
            }
            line = new String(bytes, "GBK");
            //System.out.println(line);
          }catch(Exception e){
            e.printStackTrace();
          }