亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xmlparser.java

?? 非常棒的java數據庫
?? JAVA
字號:
/*
 * Copyright 2004-2008 H2 Group. Licensed under the H2 License, Version 1.0
 * (license2)
 * Initial Developer: H2 Group
 */
package org.h2.tools.doc;

/**
 * This class implements a simple XML pull parser.
 * Only a subset of the XML pull parser API is implemented.
 */
public class XMLParser {

    public static final int ERROR = 0;
    public static final int START_ELEMENT = 1;
    public static final int END_ELEMENT = 2;
    public static final int PROCESSING_INSTRUCTION = 3;
    public static final int CHARACTERS = 4;
    public static final int COMMENT = 5;
    public static final int SPACE = 6;
    public static final int START_DOCUMENT = 7;
    public static final int END_DOCUMENT = 8;
    public static final int ENTITY_REFERENCE = 9;
    public static final int ATTRIBUTE = 10;
    public static final int DTD = 11;
    public static final int CDATA = 12;
    public static final int NAMESPACE = 13;
    public static final int NOTATION_DECLARATION = 14;
    public static final int ENTITY_DECLARATION = 15;

    private String xml;
    private int index;
    private int eventType;
    private String currentText;
    private String currentToken;
    private String prefix, localName;
    private String[] attributeValues = new String[3];
    private int currentAttribute;
    private boolean endElement;

    public XMLParser(String xml) {
        this.xml = xml;
        eventType = START_DOCUMENT;
    }

    void addAttributeName(String prefix, String localName) {
        if (attributeValues.length <= currentAttribute) {
            String[] temp = new String[attributeValues.length * 2];
            System.arraycopy(attributeValues, 0, temp, 0, attributeValues.length);
            attributeValues = temp;
        }
        attributeValues[currentAttribute++] = prefix;
        attributeValues[currentAttribute++] = localName;
    }

    void addAttributeValue(String v) {
        attributeValues[currentAttribute++] = v;
    }

    private int readChar() {
        if (index >= xml.length()) {
            return -1;
        }
        return xml.charAt(index++);
    }

    private void back() {
        index--;
    }

    private void error(String expected) {
        throw new Error("expected: " + expected + " got: " + xml.substring(index));
    }

    private void read(String chars) {
        for (int i = 0; i < chars.length(); i++) {
            if (readChar() != chars.charAt(i)) {
                error(chars);
            }
        }
    }

    private void skipSpaces() {
        while (index < xml.length() && xml.charAt(index) <= ' ') {
            index++;
        }
    }

    private void read() {
        currentText = null;
        currentAttribute = 0;
        int tokenStart = index, currentStart = index;
        int ch = readChar();
        if (ch < 0) {
            eventType = END_DOCUMENT;
        } else if (ch == '<') {
            currentStart = index;
            ch = readChar();
            if (ch < 0) {
                eventType = ERROR;
            } else if (ch == '?') {
                eventType = PROCESSING_INSTRUCTION;
                currentStart = index;
                while (true) {
                    ch = readChar();
                    if (ch < 0) {
                        error("?>");
                    }
                    if (ch == '?' && readChar() == '>') {
                        break;
                    }
                }
                if (xml.substring(currentStart).startsWith("xml")) {
                    int back = tokenStart;
                    read();
                    tokenStart = back;
                } else {
                    currentText = xml.substring(currentStart, index - 1);
                }
            } else if (ch == '!') {
                ch = readChar();
                if (ch == '-') {
                    eventType = COMMENT;
                    if (readChar() != '-') {
                        error("-");
                    }
                    currentStart = index;
                    while (true) {
                        ch = readChar();
                        if (ch < 0) {
                            error("-->");
                        }
                        if (ch == '-' && readChar() == '-') {
                            read(">");
                            break;
                        }
                    }
                    currentText = xml.substring(currentStart, index - 1);
                } else if (ch == 'D') {
                    read("OCTYPE");
                    eventType = DTD;
                    while (true) {
                        ch = readChar();
                        if (ch < 0) {
                            break;
                        }
                        if (ch == '>') {
                            break;
                        }
                    }
                } else if (ch == '[') {
                    read("CDATA[");
                    currentStart = index;
                    eventType = CHARACTERS;
                    while (true) {
                        ch = readChar();
                        if (ch < 0) {
                            error("]]>");
                        } else if (ch != ']') {
                            continue;
                        }
                        ch = readChar();
                        if (ch < 0) {
                            error("]]>");
                        } else if (ch == ']') {
                            do {
                                ch = readChar();
                                if (ch < 0) {
                                    error("]]>");
                                }
                            } while (ch == ']');
                            if (ch == '>') {
                                currentText = xml.substring(currentStart, index - 3);
                                break;
                            }
                        }
                    }
                }
            } else if (ch == '/') {
                currentStart = index;
                prefix = null;
                eventType = END_ELEMENT;
                while (true) {
                    ch = readChar();
                    if (ch < 0) {
                        error(">");
                    } else if (ch == ':') {
                        prefix = xml.substring(currentStart, index - 1);
                        currentStart = index + 1;
                    } else if (ch == '>') {
                        localName = xml.substring(currentStart, index - 1);
                        break;
                    } else if (ch <= ' ') {
                        localName = xml.substring(currentStart, index - 1);
                        skipSpaces();
                        read(">");
                        break;
                    }
                }
            } else {
                prefix = null;
                localName = null;
                eventType = START_ELEMENT;
                while (true) {
                    ch = readChar();
                    if (ch < 0) {
                        error(">");
                    } else if (ch == ':') {
                        prefix = xml.substring(currentStart, index - 1);
                        currentStart = index + 1;
                    } else if (ch <= ' ') {
                        localName = xml.substring(currentStart, index - 1);
                        readAttributeValues();
                        ch = readChar();
                    }
                    if (ch == '/') {
                        if (localName == null) {
                            localName = xml.substring(currentStart, index - 1);
                        }
                        read(">");
                        endElement = true;
                        break;
                    } else if (ch == '>') {
                        if (localName == null) {
                            localName = xml.substring(currentStart, index - 1);
                        }
                        break;
                    }
                }
            }
        } else {
            // TODO need to replace &#xx;?
            eventType = CHARACTERS;
            while (true) {
                ch = readChar();
                if (ch < 0) {
                    break;
                } else if (ch == '<') {
                    back();
                    break;
                }
            }
            currentText = xml.substring(currentStart, index);
        }
        currentToken = xml.substring(tokenStart, index);
    }

    private void readAttributeValues() {
        while (true) {
            int start = index;
            int ch = readChar();
            if (ch < 0) {
                error(">");
            } else if (ch <= ' ') {
                continue;
            } else if (ch == '/' || ch == '>') {
                back();
                return;
            }
            int end;
            int localNameStart = start;
            while (true) {
                end = index;
                ch = readChar();
                if (ch < 0) {
                    error("=");
                } else if (ch <= ' ') {
                    skipSpaces();
                    ch = readChar();
                    if (ch != '=') {
                        error("=");
                    }
                    break;
                } else if (ch == '=') {
                    break;
                } else if (ch == ':') {
                    localNameStart = index;
                }
            }
            if (localNameStart == start) {
                addAttributeName("", xml.substring(localNameStart, end));
            } else {
                addAttributeName(xml.substring(start, localNameStart - 1), xml.substring(localNameStart, end));
            }
            skipSpaces();
            ch = readChar();
            if (ch != '\"') {
                error("\"");
            }
            start = index;
            while (true) {
                end = index;
                ch = readChar();
                if (ch < 0) {
                    error("\"");
                } else if (ch == '\"') {
                    break;
                }
            }
            addAttributeValue(xml.substring(start, end));
        }
    }

    public boolean hasNext() {
        return index < xml.length();
    }

    public int next() {
        if (endElement) {
            endElement = false;
            eventType = END_ELEMENT;
            currentToken = "";
        } else {
            read();
        }
        return eventType;
    }

    public int nextTag() {
        while (true) {
            int type = next();
            if (type != COMMENT && type != DTD && type != PROCESSING_INSTRUCTION) {
                return type;
            }
        }
    }

    public int getEventType() {
        return eventType;
    }

    public String getText() {
        return currentText;
    }

    public String getToken() {
        return currentToken;
    }

    public int getAttributeCount() {
        return currentAttribute / 3;
    }

    public String getAttributePrefix(int index) {
        return attributeValues[index * 3];
    }

    public String getAttributeLocalName(int index) {
        return attributeValues[index * 3 + 1];
    }

    public String getAttributeName(int index) {
        String prefix = getAttributePrefix(index);
        String localName = getAttributeLocalName(index);
        return prefix == null || prefix.length() == 0 ? localName : prefix + ":" + localName;
    }

    public String getAttributeValue(int index) {
        return attributeValues[index * 3 + 2];
    }

    public String getAttributeValue(String namespaceURI, String localName) {
        int len = getAttributeCount();
        for (int i = 0; i < len; i++) {
            if (getAttributeLocalName(i).equals(localName)) {
                return getAttributeValue(i);
            }
        }
        return null;
    }

    public String getName() {
        return prefix == null || prefix.length() == 0 ? localName : prefix + ":" + localName;
    }

    public String getLocalName() {
        return localName;
    }

    public String getPrefix() {
        return prefix;
    }

    public boolean isWhiteSpace() {
        return getText().trim().length() == 0;
    }

    public String getRemaining() {
        return xml.substring(index);
    }

    public int getPos() {
        return index;
    }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区在线观看国产| 欧美一区二区免费| 国内欧美视频一区二区| 午夜精品久久久久影视| 一区二区三区日韩欧美| 综合色中文字幕| 日本一区二区电影| 中日韩av电影| 国产精品久久久久久久裸模| 国产精品久久久久影院| 欧美国产欧美亚州国产日韩mv天天看完整| 久久亚洲欧美国产精品乐播| 久久综合精品国产一区二区三区 | 久久久久久免费毛片精品| 日韩三级在线观看| 日韩一级免费观看| 精品sm在线观看| 国产拍欧美日韩视频二区| 中文字幕五月欧美| 亚洲国产精品久久人人爱| 日本免费在线视频不卡一不卡二| 免费人成黄页网站在线一区二区| 久久aⅴ国产欧美74aaa| 国产一二三精品| 99国产一区二区三精品乱码| 91精彩视频在线| 91精品国产色综合久久不卡蜜臀| 日韩欧美一卡二卡| 国产香蕉久久精品综合网| 亚洲天堂精品在线观看| 午夜伦理一区二区| 国产一区二区在线视频| 91日韩精品一区| 日韩一区二区三区观看| 亚洲国产精品精华液2区45| 一区二区视频在线| 精品一区二区av| av亚洲精华国产精华精| 欧美一区二区三区四区视频 | 蜜臀av性久久久久蜜臀aⅴ| 国产精品资源网站| 欧美日韩在线播放三区四区| 欧美精品一区二区三区在线播放 | 亚洲欧洲日产国码二区| 日韩经典一区二区| 白白色亚洲国产精品| 欧美日本在线一区| 中日韩av电影| 精品中文字幕一区二区小辣椒| 91欧美一区二区| 精品国产123| 午夜成人免费电影| 99精品国产热久久91蜜凸| 精品国产一区二区三区忘忧草| 亚洲高清免费在线| www.久久久久久久久| 欧美成人伊人久久综合网| 一区二区三区 在线观看视频| 国产一区二区毛片| 制服丝袜在线91| 亚洲精品免费一二三区| 成人午夜碰碰视频| 久久亚洲一区二区三区四区| 日本不卡一二三| 欧美日韩一区二区三区在线看 | 国产精品午夜在线观看| 精品一区二区精品| 日韩一级二级三级精品视频| 亚洲午夜精品17c| 色综合久久99| 亚洲欧美日韩久久精品| yourporn久久国产精品| 中文成人av在线| 国产+成+人+亚洲欧洲自线| 日韩视频中午一区| 青青草91视频| 日韩一区二区三区在线| 蜜桃av一区二区三区| 337p亚洲精品色噜噜狠狠| 午夜成人在线视频| 日韩一区二区在线看| 日本欧美大码aⅴ在线播放| 555夜色666亚洲国产免| 日韩国产欧美在线观看| 在线综合视频播放| 久久精品国产99国产| 日韩免费电影一区| 国内精品免费**视频| 久久久久99精品国产片| 成人性视频免费网站| 国产精品久久久久影院亚瑟| 成人av网站在线观看免费| 亚洲少妇30p| 欧美日韩一区二区在线观看| 日韩主播视频在线| 欧美精品一区二区三区蜜桃视频| 国产精品影视网| 亚洲欧洲国产日韩| 欧美体内she精高潮| 日本欧洲一区二区| 国产亚洲成aⅴ人片在线观看 | 国产91丝袜在线播放九色| 国产精品日日摸夜夜摸av| 在线观看免费一区| 美腿丝袜亚洲综合| 久久综合色8888| 91社区在线播放| 午夜精品久久久久久久久| 久久综合久色欧美综合狠狠| 91污片在线观看| 蜜臀av性久久久久蜜臀aⅴ流畅 | 久久网这里都是精品| 99视频有精品| 美女看a上一区| 国产精品乱人伦中文| 欧美日韩中文国产| 国产成人亚洲综合a∨婷婷图片| 一区二区中文字幕在线| 欧美一级久久久| 97久久人人超碰| 日本麻豆一区二区三区视频| 亚洲欧洲精品成人久久奇米网| 欧美区一区二区三区| 成人激情免费视频| 日韩福利视频导航| 亚洲日本一区二区| 久久综合九色综合欧美就去吻| 色久综合一二码| 国产成人精品免费| 日本欧美在线观看| 依依成人综合视频| 国产精品欧美综合在线| 欧美成人精品3d动漫h| 欧美少妇bbb| 不卡av免费在线观看| 久久超碰97人人做人人爱| 亚洲成人综合网站| 亚洲色图视频免费播放| 久久精品日韩一区二区三区| 欧美一级欧美三级| 欧美系列亚洲系列| 色婷婷av一区二区三区大白胸| 韩国欧美国产1区| 日本伊人午夜精品| 日韩专区在线视频| 亚洲电影在线播放| 一区二区三区成人| 成人免费小视频| 中文字幕一区免费在线观看| 久久久久久久久久看片| 亚洲精品在线免费观看视频| 日韩一区二区免费高清| 4438成人网| 91精品国产综合久久久蜜臀图片| 欧美性三三影院| 欧美三级视频在线| 欧洲精品中文字幕| 在线视频综合导航| 91福利社在线观看| 欧美三级电影在线看| 欧美三级中文字幕在线观看| 欧美影院精品一区| 欧美性一级生活| 欧美精品第1页| 欧美一区二区三区在线观看| 欧美一级欧美三级| 久久综合色8888| 欧美国产视频在线| 亚洲青青青在线视频| 亚洲精品国产无套在线观| 亚洲最快最全在线视频| 一卡二卡三卡日韩欧美| 日韩中文字幕区一区有砖一区 | 日韩激情在线观看| 麻豆91在线播放免费| 国产乱码精品一区二区三| 国产91精品一区二区麻豆亚洲| 成人精品高清在线| 91国偷自产一区二区三区成为亚洲经典 | 国产精品欧美综合在线| 亚洲女同女同女同女同女同69| 亚洲一区二区在线观看视频| 男人的j进女人的j一区| 国产自产2019最新不卡| 成人少妇影院yyyy| 欧美日韩精品一区二区| 日韩三级中文字幕| 1000精品久久久久久久久| 亚洲一级二级三级在线免费观看| 美女视频黄久久| 成人激情免费网站| 欧美日韩成人综合在线一区二区| 精品国产电影一区二区| 1024亚洲合集| 久久99久久99| 日本久久电影网| 久久久久久久综合狠狠综合| 一区二区三区免费观看| 韩国女主播成人在线| 欧美视频在线一区|