Java 解析XML中的无效字符

Java 解析XML中的无效字符,java,xml,xml-parsing,Java,Xml,Xml Parsing,我正在尝试从数据库中读取数据,并将这些数据分配给DataObject。 但是DB中的一列有一个无效的字符(请参见图像中突出显示的文本区域),无法在XML UTF-8中进行解析,请任何人帮助我解决这个问题。 提前谢谢 目前,我正在使用以下代码删除无效字符 try { out = new StringBuffer(); // Used to hold the output. char current; // Used to reference the current

我正在尝试从数据库中读取数据,并将这些数据分配给DataObject。 但是DB中的一列有一个无效的字符(请参见图像中突出显示的文本区域),无法在XML UTF-8中进行解析,请任何人帮助我解决这个问题。 提前谢谢

目前,我正在使用以下代码删除无效字符

    try {

        out = new StringBuffer(); // Used to hold the output.
    char current; // Used to reference the current character.
    if (in == null || ("".equals(in))) return ""; // vacancy test.
    for (int i = 0; i < in.length(); i++) {
        current = in.charAt(i); // NOTE: No IndexOutOfBoundsException caught here; it should not happen.
        if ((current == 0x9) ||  (current == 0xA) || (current == 0xD) || ((current >= 0x20) && (current <= 0xD7FF)) ||
            ((current >= 0xE000) && (current <= 0xFFFD)) || ((current >= 0x10000) && (current <= 0x10FFFF)))
        {  
            out.append(current);
        }


    }

    return out.toString();
试试看{
out=new StringBuffer();//用于保存输出。
char current;//用于引用当前字符。
if(in==null | |(“”.equals(in)))返回“”;//空缺测试。
对于(int i=0;i如果((当前==0x9)| |(当前==0xA)| |(当前==0xD)| |((当前>=0x20)&&&&&(当前=0xE000)&&&&(当前=0x10000)&&(当前最终我找到了问题的解决方案

最可能的情况是,您希望同时剥离不可打印字符和控制字符。为此,您可以使用以下regexp:“[^\x20-\x7E]”或简单地说:“[^-~]”


有关此主题的更多信息,您也可以参考。

最后,我找到了问题的解决方案

最可能的情况是,您希望同时剥离不可打印字符和控制字符。为此,您可以使用以下regexp:“[^\x20-\x7E]”或简单地说:“[^-~]”


有关此主题的更多信息,您也可以参考。

请详细说明什么是解决方案。不清楚您所说的是无效的,以及如何无效。字段是否应该包含UTF-8编码的文本,并且它包含的字节序列是无效的UTF-8?或者,您只是想在XML d中放置一个字符序列文档,它恰好包含XML禁止的字符?请详细说明什么是解决方案。不清楚您所说的是无效的,以及如何无效。字段是否应该包含UTF-8编码的文本,并且它包含的字节序列是无效的UTF-8?或者,您只是想在XML文档中放入一个字符序列而且它恰好包含XML禁止的字符?