不能,所以对于那些可能出现非法xml字符的数据,最好使用CDATA对象来包装

解决方案 »

  1.   

    我碰到了和你同样的问题,只不过是乱码不同而已,
    可以在解析之前把xml中的乱码去掉,方法如下:
    public static boolean isChar(int ucs4char){
    return ((ucs4char >= 0x0020 && ucs4char <= 0xD7FF)
    || ucs4char == 0x000A || ucs4char == 0x0009
    || ucs4char == 0x000D
    || (ucs4char >= 0xE000 && ucs4char <= 0xFFFD)
    || (ucs4char >= 0x10000 && ucs4char <= 0x10ffff));

    }如果那个方法返回的为false,去掉那个字符
      

  2.   

    楼上的错误信息表明,你的xml字段中有ascii为0的字符
      

  3.   

    /**
     * 过滤非法xml字符
     * @param xml
     * @return
     */
    public static String toXmlChars(String xml){
    String newXml = xml;
    for(int i = 0; i < xml.length(); i++){
    char ch = xml.charAt(i);
    if(!isChar(ch)){
    newXml = newXml.substring(0, i) + " " + newXml.substring(i+1);
    }
    }
    return newXml;
    }