648540858
2023-07-06 e163cf4d202e7fe8fb35e29999eeb53e4f525a71
兼容海康平台在address字段使用错误的<或>破坏xml结构的情况, #903
1个文件已修改
19 ■■■■■ 已修改文件
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java
@@ -199,7 +199,24 @@
        Byte[] bytes = new Byte[0];
        byte[] bytesResult = ArrayUtils.toPrimitive(result.toArray(bytes));
        Document xml = reader.read(new ByteArrayInputStream(bytesResult));
        Document xml;
        try {
            xml = reader.read(new ByteArrayInputStream(bytesResult));
        }catch (DocumentException e) {
            logger.warn("[xml解析异常]: 愿文如下: \r\n{}", new String(bytesResult));
            logger.warn("[xml解析异常]: 愿文如下: 尝试兼容性处理");
            String[] xmlLineArray = new String(bytesResult).split("\\r?\\n");
            // 兼容海康的address字段带有<破换xml结构导致无法解析xml的问题
            StringBuilder stringBuilder = new StringBuilder();
            for (String s : xmlLineArray) {
                if (s.startsWith("<Address")) {
                    continue;
                }
                stringBuilder.append(s);
            }
            xml = reader.read(new ByteArrayInputStream(stringBuilder.toString().getBytes()));
        }
        return xml.getRootElement();
    }