⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlscanner.java

📁 java1.6众多例子参考
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
                                new Object[]{Integer.toHexString(c)});                                fEntityScanner.scanChar();                    }                }            } while (fEntityScanner.scanData("?>", data));        }            } // scanPIData(String,XMLString)        /**     * Scans a comment.     * <p>     * <pre>     * [15] Comment ::= '&lt!--' ((Char - '-') | ('-' (Char - '-')))* '-->'     * </pre>     * <p>     * <strong>Note:</strong> Called after scanning past '&lt;!--'     * <strong>Note:</strong> This method uses fString, anything in it     * at the time of calling is lost.     *     * @param text The buffer to fill in with the text.     */    protected void scanComment(XMLStringBuffer text)    throws IOException, XNIException {                //System.out.println( "XMLScanner#scanComment# In Scan Comment" );        // text        // REVISIT: handle invalid character, eof        text.clear();        while (fEntityScanner.scanData("--", text)) {            int c = fEntityScanner.peekChar();                        //System.out.println( "XMLScanner#scanComment#text.toString() == " + text.toString() );            //System.out.println( "XMLScanner#scanComment#c == " + c );                        if (c != -1) {                if (XMLChar.isHighSurrogate(c)) {                    scanSurrogates(text);                }                if (isInvalidLiteral(c)) {                    reportFatalError("InvalidCharInComment",                            new Object[] { Integer.toHexString(c) });                            fEntityScanner.scanChar();                }            }        }        if (!fEntityScanner.skipChar('>')) {            reportFatalError("DashDashInComment", null);        }            } // scanComment()        /**     * Scans an attribute value and normalizes whitespace converting all     * whitespace characters to space characters.     *     * [10] AttValue ::= '"' ([^<&"] | Reference)* '"' | "'" ([^<&'] | Reference)* "'"     *     * @param value The XMLString to fill in with the value.     * @param nonNormalizedValue The XMLString to fill in with the     *                           non-normalized value.     * @param atName The name of the attribute being parsed (for error msgs).     * @param attributes The attributes list for the scanned attribute.     * @param attrIndex The index of the attribute to use from the list.     * @param checkEntities true if undeclared entities should be reported as VC violation,     *                      false if undeclared entities should be reported as WFC violation.     *     * <strong>Note:</strong> This method uses fStringBuffer2, anything in it     * at the time of calling is lost.     **/    protected void scanAttributeValue(XMLString value,            XMLString nonNormalizedValue,            String atName,            XMLAttributes attributes, int attrIndex,            boolean checkEntities)            throws IOException, XNIException {        XMLStringBuffer stringBuffer = null;        // quote        int quote = fEntityScanner.peekChar();        if (quote != '\'' && quote != '"') {            reportFatalError("OpenQuoteExpected", new Object[]{atName});        }                fEntityScanner.scanChar();        int entityDepth = fEntityDepth;                int c = fEntityScanner.scanLiteral(quote, value);        if (DEBUG_ATTR_NORMALIZATION) {            System.out.println("** scanLiteral -> \""                    + value.toString() + "\"");        }        if(fNeedNonNormalizedValue){            fStringBuffer2.clear();            fStringBuffer2.append(value);        }        if(fEntityScanner.whiteSpaceLen > 0)            normalizeWhitespace(value);        if (DEBUG_ATTR_NORMALIZATION) {            System.out.println("** normalizeWhitespace -> \""                    + value.toString() + "\"");        }        if (c != quote) {            fScanningAttribute = true;            stringBuffer = getStringBuffer();            stringBuffer.clear();            do {                stringBuffer.append(value);                if (DEBUG_ATTR_NORMALIZATION) {                    System.out.println("** value2: \""                            + stringBuffer.toString() + "\"");                }                if (c == '&') {                    fEntityScanner.skipChar('&');                    if (entityDepth == fEntityDepth && fNeedNonNormalizedValue ) {                        fStringBuffer2.append('&');                    }                    if (fEntityScanner.skipChar('#')) {                        if (entityDepth == fEntityDepth && fNeedNonNormalizedValue ) {                            fStringBuffer2.append('#');                        }                        int ch ;                        if (fNeedNonNormalizedValue)                            ch = scanCharReferenceValue(stringBuffer, fStringBuffer2);                        else                            ch = scanCharReferenceValue(stringBuffer, null);                                                if (ch != -1) {                            if (DEBUG_ATTR_NORMALIZATION) {                                System.out.println("** value3: \""                                        + stringBuffer.toString()                                        + "\"");                            }                        }                    } else {                        String entityName = fEntityScanner.scanName();                        if (entityName == null) {                            reportFatalError("NameRequiredInReference", null);                        } else if (entityDepth == fEntityDepth && fNeedNonNormalizedValue) {                            fStringBuffer2.append(entityName);                        }                        if (!fEntityScanner.skipChar(';')) {                            reportFatalError("SemicolonRequiredInReference",                                    new Object []{entityName});                        } else if (entityDepth == fEntityDepth && fNeedNonNormalizedValue) {                            fStringBuffer2.append(';');                        }                        if (entityName == fAmpSymbol) {                            stringBuffer.append('&');                            if (DEBUG_ATTR_NORMALIZATION) {                                System.out.println("** value5: \""                                        + stringBuffer.toString()                                        + "\"");                            }                        } else if (entityName == fAposSymbol) {                            stringBuffer.append('\'');                            if (DEBUG_ATTR_NORMALIZATION) {                                System.out.println("** value7: \""                                        + stringBuffer.toString()                                        + "\"");                            }                        } else if (entityName == fLtSymbol) {                            stringBuffer.append('<');                            if (DEBUG_ATTR_NORMALIZATION) {                                System.out.println("** value9: \""                                        + stringBuffer.toString()                                        + "\"");                            }                        } else if (entityName == fGtSymbol) {                            stringBuffer.append('>');                            if (DEBUG_ATTR_NORMALIZATION) {                                System.out.println("** valueB: \""                                        + stringBuffer.toString()                                        + "\"");                            }                        } else if (entityName == fQuotSymbol) {                            stringBuffer.append('"');                            if (DEBUG_ATTR_NORMALIZATION) {                                System.out.println("** valueD: \""                                        + stringBuffer.toString()                                        + "\"");                            }                        } else {                            if (fEntityStore.isExternalEntity(entityName)) {                                reportFatalError("ReferenceToExternalEntity",                                        new Object[] { entityName });                            } else {                                if (!fEntityStore.isDeclaredEntity(entityName)) {                                    //WFC & VC: Entity Declared                                    if (checkEntities) {                                        if (fValidation) {                                            fErrorReporter.reportError(fEntityScanner,XMLMessageFormatter.XML_DOMAIN,                                                    "EntityNotDeclared",                                                    new Object[]{entityName},                                                    XMLErrorReporter.SEVERITY_ERROR);                                        }                                    } else {                                        reportFatalError("EntityNotDeclared",                                                new Object[]{entityName});                                    }                                }                                fEntityManager.startEntity(entityName, true);                            }                        }                    }                } else if (c == '<') {                    reportFatalError("LessthanInAttValue",                            new Object[] { null, atName });                            fEntityScanner.scanChar();                            if (entityDepth == fEntityDepth && fNeedNonNormalizedValue) {                                fStringBuffer2.append((char)c);                            }                } else if (c == '%' || c == ']') {                    fEntityScanner.scanChar();                    stringBuffer.append((char)c);                    if (entityDepth == fEntityDepth && fNeedNonNormalizedValue) {                        fStringBuffer2.append((char)c);                    }                    if (DEBUG_ATTR_NORMALIZATION) {                        System.out.println("** valueF: \""                                + stringBuffer.toString() + "\"");                    }                } else if (c == '\n' || c == '\r') {                    fEntityScanner.scanChar();                    stringBuffer.append(' ');                    if (entityDepth == fEntityDepth && fNeedNonNormalizedValue) {                        fStringBuffer2.append('\n');                    }                } else if (c != -1 && XMLChar.isHighSurrogate(c)) {                    if (scanSurrogates(fStringBuffer3)) {                        stringBuffer.append(fStringBuffer3);                        if (entityDepth == fEntityDepth && fNeedNonNormalizedValue) {                            fStringBuffer2.append(fStringBuffer3);                        }                        if (DEBUG_ATTR_NORMALIZATION) {                            System.out.println("** valueI: \""                                    + stringBuffer.toString()                                    + "\"");                        }                    }                } else if (c != -1 && isInvalidLiteral(c)) {                    reportFatalError("InvalidCharInAttValue",                            new Object[] {Integer.toString(c, 16)});                            fEntityScanner.scanChar();                            if (entityDepth == fEntityDepth && fNeedNonNormalizedValue) {                                fStringBuffer2.append((char)c);                            }                }                c = fEntityScanner.scanLiteral(quote, value);                if (entityDepth == fEntityDepth && fNeedNonNormalizedValue) {                    fStringBuffer2.append(value);                }                if(fEntityScanner.whiteSpaceLen > 0)                    normalizeWhitespace(value);                //Todo ::Move this check  to Attributes , do conversion                //only if attribute is being accessed. -Venu            } while (c != quote || entityDepth != fEntityDepth);            stringBuffer.append(value);            if (DEBUG_ATTR_NORMALIZATION) {                System.out.println("** valueN: \""                        + stringBuffer.toString() + "\"");            }            value.setValues(stringBuffer);            fScanningAttribute = false;        }        if(fNeedNonNormalizedValue)            nonNormalizedValue.setValues(fStringBuffer2);                // quote        int cquote = fEntityScanner.scanChar();        if (cquote != quote) {            reportFatalError("CloseQuoteExpected", new Object[]{atName});        }    } // scanAttributeValue()            /**     * Scans External ID and return the public and system IDs.     *     * @param identifiers An array of size 2 to return the system id,     *                    and public id (in that order).     * @param optionalSystemId Specifies whether the system id is optional.     *     * <strong>Note:</strong> This method uses fString and fStringBuffer,     * anything in them at the time of calling is lost.     */    protected void scanExternalID(String[] identifiers,            boolean optionalSystemId)            throws IOException, XNIException {                String systemId = null;        String publicId = null;        if (fEntityScanner.skipString("PUBLIC")) {            if (!fEntityScanner.skipSpaces()) {                reportFatalError("SpaceRequiredAfterPUBLIC", null);            }            scanPubidLiteral(fString);            publicId = fString.toString();                        if (!fEntityScanner.skipSpaces() && !optionalSystemId) {                reportFatalError("SpaceRequiredBetweenPublicAndSystem", null);            }        }                if (publicId != null || fEntityScanner.skipString("SYSTEM")) {            if (publicId == null && !fEntityScanner.skipSpaces()) {                reportFatalError("SpaceRequiredAfterSYSTEM", null);            }            int quote = fEntityScanner.peekChar();            if (quote != '\'' && quote != '"') {                if (publicId != null && optionalSystemId) {                    // looks like we don't have any system id                    // simply return the public id                    identifiers[0] = null;                    identifiers[1] = publicId;                    return;                }                reportFatalError("QuoteRequiredInSystemID", null);            }            fEntityScanner.scanChar();            XMLString ident = fString;            if (fEntityScanner.scanLiteral(quote, ident) != quote) {                fStringBuffer.clear();                do {                    fStringBuffer.append(ident);                    int c = fEntityScanner.peekChar();                    if (XMLChar.isMarkup(c) || c == ']') {                        fStringBuffer.append((char)fEntityScanner.scanChar());                    }                } while (fEntityScanner.scanLiteral(quote, ident) != quote);                fStringBuffer.append(ident);                ident = fStringBuffer;            }            systemId = ident.toString();            if (!fEntityScanner.skipChar(quote)) {                reportFatalError("SystemIDUnterminated", null);            }        }                // store result in array        identifiers[0] = systemId;        identifiers[1] = publicId;    }            /**     * Scans public ID literal.     *     * [12] PubidLiteral ::= '"' PubidChar* '"' | "'" (PubidChar - "'")* "'"     * [13] PubidChar::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]     *     * The returned string is normalized according to the following rule,     * from http://www.w3.org/TR/REC-xml#dt-pubid:     *     * Before a match is attempted, all strings of white space in the public     * identifier must be normalized to single space characters (#x20), and     * leading and trailing white space must be removed.     *     * @param literal The string to fill in with the public ID literal.     * @return True on success.     *     * <strong>Note:</strong> This method uses fStringBuffer, anything in it at     * the time of calling is lost.     */

⌨️ 快捷键说明

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