兼容海康平台在address字段使用错误的<或>破坏xml结构的情况, #903

This commit is contained in:
648540858 2023-07-06 15:18:10 +08:00
parent 61e5226122
commit e163cf4d20

View File

@ -199,7 +199,24 @@ public abstract class SIPRequestProcessorParent {
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();
}