From 1086e27bd950ff0b35c1118fd15547f8a445ded8 Mon Sep 17 00:00:00 2001 From: Bryant Date: Thu, 16 Jan 2020 14:44:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A0jira=E4=BB=BB=E5=8A=A1=20third?= =?UTF-8?q?=E5=8C=85=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../javax/xml/stream/XMLEntityReaderImpl.java | 34 +++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/fine-third-default/fine-sjsxp/src/main/java/com/fr/third/javax/xml/stream/XMLEntityReaderImpl.java b/fine-third-default/fine-sjsxp/src/main/java/com/fr/third/javax/xml/stream/XMLEntityReaderImpl.java index 90801c0c2..510617458 100644 --- a/fine-third-default/fine-sjsxp/src/main/java/com/fr/third/javax/xml/stream/XMLEntityReaderImpl.java +++ b/fine-third-default/fine-sjsxp/src/main/java/com/fr/third/javax/xml/stream/XMLEntityReaderImpl.java @@ -183,6 +183,7 @@ public class XMLEntityReaderImpl extends XMLEntityReader { validContent[i]=true; } validContent[0x9]=true; + validContent[0xA]=true; validContent[0x26]=false; validContent[0x3C]=false; validContent[0x5D]=false; @@ -1353,6 +1354,27 @@ public class XMLEntityReaderImpl extends XMLEntityReader { break; } else if (XMLChar.isInvalid(c)) { + if(XMLChar.isHighSurrogate(c)){ + fCurrentEntity.position--; + if (fCurrentEntity.position - offset > 0){ + int length = fCurrentEntity.position - offset; + fCurrentEntity.columnNumber += length - newlines; + buffer.append(fCurrentEntity.ch, offset, length); + } + int high = this.scanChar(); + int low = this.peekChar(); + if (!XMLChar.isLowSurrogate(low)) { + return false; + } + int x = XMLChar.supplemental((char)high, (char)low); + if (isInvalid(x)) { + return false; + } + buffer.append((char)high); + buffer.append((char)low); + offset = ++fCurrentEntity.position; + break; + } fCurrentEntity.position--; int length = fCurrentEntity.position - offset; fCurrentEntity.columnNumber += length - newlines; @@ -1360,13 +1382,13 @@ public class XMLEntityReaderImpl extends XMLEntityReader { return true; } } - int length = fCurrentEntity.position - offset; - fCurrentEntity.columnNumber += length - newlines; - if (done) { - length -= delimLen; + if (length != 0){ + fCurrentEntity.columnNumber += length - newlines; + if (done) { + length -= delimLen; + } + buffer.append(fCurrentEntity.ch, offset, length); } - buffer.append(fCurrentEntity.ch, offset, length); - // return true if string was skipped if (DEBUG_BUFFER) { System.out.print(")scanData: ");