xml11entityscanner.java

来自「JAVA 所有包」· Java 代码 · 共 1,525 行 · 第 1/5 页

JAVA
1,525
字号
                    fCurrentEntity.columnNumber++;                    String symbol = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 1);                    return symbol;                }            }        }        else if (XML11Char.isXML11NameHighSurrogate(ch)) {            if (++fCurrentEntity.position == fCurrentEntity.count) {                fCurrentEntity.ch[0] = ch;                offset = 0;                if (load(1, false)) {                    --fCurrentEntity.position;                    --fCurrentEntity.startPosition;                    return null;                }            }            char ch2 = fCurrentEntity.ch[fCurrentEntity.position];            if ( !XMLChar.isLowSurrogate(ch2) ||                 !XML11Char.isXML11NameStart(XMLChar.supplemental(ch, ch2)) ) {                --fCurrentEntity.position;                return null;            }            if (++fCurrentEntity.position == fCurrentEntity.count) {                fCurrentEntity.ch[0] = ch;                fCurrentEntity.ch[1] = ch2;                offset = 0;                if (load(2, false)) {                    fCurrentEntity.columnNumber += 2;                    String symbol = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 2);                    return symbol;                }            }        }        else {            return null;        }                do {            ch = fCurrentEntity.ch[fCurrentEntity.position];            if (XML11Char.isXML11Name(ch)) {                if (++fCurrentEntity.position == fCurrentEntity.count) {                    int length = fCurrentEntity.position - offset;                    if (length == fCurrentEntity.ch.length) {                        // bad luck we have to resize our buffer                        char[] tmp = new char[fCurrentEntity.ch.length << 1];                        System.arraycopy(fCurrentEntity.ch, offset,                                         tmp, 0, length);                        fCurrentEntity.ch = tmp;                    }                    else {                        System.arraycopy(fCurrentEntity.ch, offset,                                         fCurrentEntity.ch, 0, length);                    }                    offset = 0;                    if (load(length, false)) {                        break;                    }                }            }            else if (XML11Char.isXML11NameHighSurrogate(ch)) {                if (++fCurrentEntity.position == fCurrentEntity.count) {                    int length = fCurrentEntity.position - offset;                    if (length == fCurrentEntity.ch.length) {                        // bad luck we have to resize our buffer                        char[] tmp = new char[fCurrentEntity.ch.length << 1];                        System.arraycopy(fCurrentEntity.ch, offset,                                         tmp, 0, length);                        fCurrentEntity.ch = tmp;                    }                    else {                        System.arraycopy(fCurrentEntity.ch, offset,                                         fCurrentEntity.ch, 0, length);                    }                    offset = 0;                    if (load(length, false)) {                        --fCurrentEntity.position;                        --fCurrentEntity.startPosition;                        break;                    }                }                char ch2 = fCurrentEntity.ch[fCurrentEntity.position];                if ( !XMLChar.isLowSurrogate(ch2) ||                     !XML11Char.isXML11Name(XMLChar.supplemental(ch, ch2)) ) {                    --fCurrentEntity.position;                    break;                }                if (++fCurrentEntity.position == fCurrentEntity.count) {                    int length = fCurrentEntity.position - offset;                    if (length == fCurrentEntity.ch.length) {                        // bad luck we have to resize our buffer                        char[] tmp = new char[fCurrentEntity.ch.length << 1];                        System.arraycopy(fCurrentEntity.ch, offset,                                         tmp, 0, length);                        fCurrentEntity.ch = tmp;                    }                    else {                        System.arraycopy(fCurrentEntity.ch, offset,                                         fCurrentEntity.ch, 0, length);                    }                    offset = 0;                    if (load(length, false)) {                        break;                    }                }            }            else {                break;            }        }        while (true);        int length = fCurrentEntity.position - offset;        fCurrentEntity.columnNumber += length;        // return name        String symbol = null;        if (length > 0) {            symbol = fSymbolTable.addSymbol(fCurrentEntity.ch, offset, length);        }        return symbol;    } // scanName():String    /**     * Returns a string matching the NCName production appearing immediately     * on the input as a symbol, or null if no NCName string is present.     * <p>     * <strong>Note:</strong> The NCName characters are consumed.     * <p>     * <strong>Note:</strong> The string returned must be a symbol. The     * SymbolTable can be used for this purpose.     *     * @throws IOException  Thrown if i/o error occurs.     * @throws EOFException Thrown on end of file.     *     * @see com.sun.org.apache.xerces.internal.util.SymbolTable     * @see com.sun.org.apache.xerces.internal.util.XML11Char#isXML11NCName     * @see com.sun.org.apache.xerces.internal.util.XML11Char#isXML11NCNameStart     */    public String scanNCName() throws IOException {        // load more characters, if needed        if (fCurrentEntity.position == fCurrentEntity.count) {            load(0, true);        }        // scan name        int offset = fCurrentEntity.position;        char ch = fCurrentEntity.ch[offset];                if (XML11Char.isXML11NCNameStart(ch)) {            if (++fCurrentEntity.position == fCurrentEntity.count) {                fCurrentEntity.ch[0] = ch;                offset = 0;                if (load(1, false)) {                    fCurrentEntity.columnNumber++;                    String symbol = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 1);                    return symbol;                }            }        }        else if (XML11Char.isXML11NameHighSurrogate(ch)) {            if (++fCurrentEntity.position == fCurrentEntity.count) {                fCurrentEntity.ch[0] = ch;                offset = 0;                if (load(1, false)) {                    --fCurrentEntity.position;                    --fCurrentEntity.startPosition;                    return null;                }            }            char ch2 = fCurrentEntity.ch[fCurrentEntity.position];            if ( !XMLChar.isLowSurrogate(ch2) ||                 !XML11Char.isXML11NCNameStart(XMLChar.supplemental(ch, ch2)) ) {                --fCurrentEntity.position;                return null;            }            if (++fCurrentEntity.position == fCurrentEntity.count) {                fCurrentEntity.ch[0] = ch;                fCurrentEntity.ch[1] = ch2;                offset = 0;                if (load(2, false)) {                    fCurrentEntity.columnNumber += 2;                    String symbol = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 2);                    return symbol;                }            }        }        else {            return null;        }                do {            ch = fCurrentEntity.ch[fCurrentEntity.position];            if (XML11Char.isXML11NCName(ch)) {                if (++fCurrentEntity.position == fCurrentEntity.count) {                    int length = fCurrentEntity.position - offset;                    if (length == fCurrentEntity.ch.length) {                        // bad luck we have to resize our buffer                        char[] tmp = new char[fCurrentEntity.ch.length << 1];                        System.arraycopy(fCurrentEntity.ch, offset,                                         tmp, 0, length);                        fCurrentEntity.ch = tmp;                    }                    else {                        System.arraycopy(fCurrentEntity.ch, offset,                                         fCurrentEntity.ch, 0, length);                    }                    offset = 0;                    if (load(length, false)) {                        break;                    }                }            }            else if (XML11Char.isXML11NameHighSurrogate(ch)) {                if (++fCurrentEntity.position == fCurrentEntity.count) {                    int length = fCurrentEntity.position - offset;                    if (length == fCurrentEntity.ch.length) {                        // bad luck we have to resize our buffer                        char[] tmp = new char[fCurrentEntity.ch.length << 1];                        System.arraycopy(fCurrentEntity.ch, offset,                                         tmp, 0, length);                        fCurrentEntity.ch = tmp;                    }                    else {                        System.arraycopy(fCurrentEntity.ch, offset,                                         fCurrentEntity.ch, 0, length);                    }                    offset = 0;                    if (load(length, false)) {                        --fCurrentEntity.startPosition;                        --fCurrentEntity.position;                        break;                    }                }                char ch2 = fCurrentEntity.ch[fCurrentEntity.position];                if ( !XMLChar.isLowSurrogate(ch2) ||                     !XML11Char.isXML11NCName(XMLChar.supplemental(ch, ch2)) ) {                    --fCurrentEntity.position;                    break;                }                if (++fCurrentEntity.position == fCurrentEntity.count) {                    int length = fCurrentEntity.position - offset;                    if (length == fCurrentEntity.ch.length) {                        // bad luck we have to resize our buffer                        char[] tmp = new char[fCurrentEntity.ch.length << 1];                        System.arraycopy(fCurrentEntity.ch, offset,                                         tmp, 0, length);                        fCurrentEntity.ch = tmp;                    }                    else {                        System.arraycopy(fCurrentEntity.ch, offset,                                         fCurrentEntity.ch, 0, length);                    }                    offset = 0;                    if (load(length, false)) {                        break;                    }                }            }            else {                break;            }        }        while (true);                int length = fCurrentEntity.position - offset;        fCurrentEntity.columnNumber += length;        // return name        String symbol = null;        if (length > 0) {            symbol = fSymbolTable.addSymbol(fCurrentEntity.ch, offset, length);        }        return symbol;    } // scanNCName():String    /**     * Scans a qualified name from the input, setting the fields of the     * QName structure appropriately.     * <p>     * <strong>Note:</strong> The qualified name characters are consumed.     * <p>     * <strong>Note:</strong> The strings used to set the values of the     * QName structure must be symbols. The SymbolTable can be used for     * this purpose.     *     * @param qname The qualified name structure to fill.     *     * @return Returns true if a qualified name appeared immediately on     *         the input and was scanned, false otherwise.     *     * @throws IOException  Thrown if i/o error occurs.     * @throws EOFException Thrown on end of file.     *     * @see com.sun.org.apache.xerces.internal.util.SymbolTable     * @see com.sun.org.apache.xerces.internal.util.XML11Char#isXML11Name     * @see com.sun.org.apache.xerces.internal.util.XML11Char#isXML11NameStart     */    public boolean scanQName(QName qname) throws IOException {        // load more characters, if needed        if (fCurrentEntity.position == fCurrentEntity.count) {            load(0, true);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?