XML解析特殊字符转义实体内容丢失

  生产环境上遇到过一个SAX解析XML的问题,在订单详情节点中是商户按照规则用字符串拼的内容填充在里面,其中可能会包含有特殊字符的转义字符。比如&的转义:&

  在这种情况下自己写的解析代码会导致一个问题,&之前的内容都丢失了。例如节点内容是:商户|店铺|商品描述|09874&蛋糕|88.00,解析完成后得到的结果是:蛋糕|88.00

  查阅了一些资料发现,characters(char[] ch, int start, int length)在解析某个节点内容如果遇上不识别的标记是会在同一个节点中执行多次的。而我的characters实现的代码如下:

       @Override
        public void characters(char[] ch, int start, int length) {
            value = new String(ch, start, length);
        }

这样就导致了我拿到的结果丢失,代码改成下面这样就能避免这个问题

        @Override
        public void characters(char[] ch, int start, int length) {
            value.append(ch, start, length).toString();
        }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容