【问题标题】:Parsing invalid characters in XML解析 XML 中的无效字符
【发布时间】:2016-07-23 05:09:45
【问题描述】:

我正在尝试从 DB 中读取数据并将这些数据分配给 DataObject。 但是 DB 中的一列有一个无效的字符(请参阅图像 http://i.stack.imgur.com/6bpx4.png 中突出显示的文本区域),它无法在 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();

【问题讨论】:

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

标签: java xml xml-parsing


【解决方案1】:

终于解决了我的问题..

您很可能希望同时去除不可打印字符和控制字符。为此,您将使用以下正则表达式:"[^\x20-\x7E]" 或者简单地说:"[^ -~]"

您也可以参考Replace non ASCII character from string 了解有关此主题的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-12
    • 2021-06-03
    • 1970-01-01
    • 2010-11-21
    • 2017-03-22
    • 2016-10-06
    • 2011-11-08
    • 1970-01-01
    相关资源
    最近更新 更多