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

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

?? documentcomparator.java

?? 對xml很好的java處理引擎,編譯中綁定xml
?? JAVA
字號:
/*Copyright (c) 2003-2007, Dennis M. SosnoskiAll rights reserved.Redistribution and use in source and binary forms, with or without modification,are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this   list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice,   this list of conditions and the following disclaimer in the documentation   and/or other materials provided with the distribution. * Neither the name of JiBX nor the names of its contributors may be used   to endorse or promote products derived from this software without specific   prior written permission.THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ANDANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE AREDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FORANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ONANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THISSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*/package org.jibx.extras;import java.io.IOException;import java.io.PrintStream;import java.io.Reader;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserException;import org.xmlpull.v1.XmlPullParserFactory;/** * XML document comparator. This uses XMLPull parsers to read a pair of * documents in parallel, comparing the streams of components seen from the two * documents. The comparison ignores differences in whitespace separating * elements, but treats whitespace as significant within elements with only * character data content.  *  * @author Dennis M. Sosnoski */public class DocumentComparator{    /** Parser for first document. */    protected XmlPullParser m_parserA;    /** Parser for second document. */    protected XmlPullParser m_parserB;        /** Print stream for reporting differences. */    protected PrintStream m_differencePrint;    /**     * Constructor. Builds the actual parser.     *     * @param print print stream for reporting differences     * @throws XmlPullParserException on error creating parsers     */    public DocumentComparator(PrintStream print) throws XmlPullParserException {        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();        factory.setNamespaceAware(true);        m_parserA = factory.newPullParser();        m_parserB = factory.newPullParser();        m_differencePrint = print;    }    /**     * Build parse input position description.     *     * @param parser for which to build description     * @return text description of current parse position     */    protected String buildPositionString(XmlPullParser parser) {        return " line " + parser.getLineNumber() + ", col " +            parser.getColumnNumber();    }        /**     * Build name string.     *      * @param ns namespace URI     * @param name local name     * @return printable names string     */    protected String buildName(String ns, String name) {        if ("".equals(ns)) {            return name;        } else {            return "{" + ns + '}' + name;        }    }    /**     * Prints error description text. The generated text include position     * information from both documents.      *     * @param msg error message text     */    protected void printError(String msg) {        if (m_differencePrint != null) {            m_differencePrint.println(msg + " - from " +                buildPositionString(m_parserA) + " to " +                buildPositionString(m_parserB));        }    }    /**     * Verifies that the attributes on the current start tags match. Any     * mismatches are printed immediately.     *     * @return <code>true</code> if the attributes match, <code>false</code> if     * not     */    protected boolean matchAttributes() {        int counta = m_parserA.getAttributeCount();        int countb = m_parserB.getAttributeCount();        boolean[] flags = new boolean[countb];        boolean match = true;        for (int i = 0; i < counta; i++) {            String name = m_parserA.getAttributeName(i);            String ns = m_parserA.getAttributeNamespace(i);            String value = m_parserA.getAttributeValue(i);            boolean found = false;            for (int j = 0; j < countb; j++) {                if (name.equals(m_parserB.getAttributeName(j)) &&                    ns.equals(m_parserB.getAttributeNamespace(j))) {                    flags[j] = true;                    if (!value.equals(m_parserB.getAttributeValue(j))) {                        if (match) {                            printError("Attribute mismatch");                            match = false;                        }                        m_differencePrint.println("  attribute " +                            buildName(ns, name) + " value '" + value +                            "' != '" + m_parserB.getAttributeValue(j) + '\'');                    }                    found = true;                    break;                }            }            if (!found) {                if (match) {                    printError("Attribute mismatch");                    match = false;                }                m_differencePrint.println("  attribute " +                    buildName(ns, name) + " is missing from second document");            }        }        for (int i = 0; i < countb; i++) {            if (!flags[i]) {                if (match) {                    printError("Attribute mismatch");                    match = false;                }                m_differencePrint.println("  attribute " +                    buildName(m_parserB.getAttributeNamespace(i),                    m_parserB.getAttributeName(i)) +                    " is missing from first document");            }        }        return match;    }    /**     * Check if two text strings match, ignoring leading and trailing spaces.     * Any mismatch is printed immediately, with the supplied lead text.     *     * @param texta     * @param textb     * @param lead error text lead     * @return <code>true</code> if the texts match, <code>false</code> if     * not     */    protected boolean matchText(String texta, String textb, String lead) {        if (texta.trim().equals(textb.trim())) {            return true;        } else {            printError(lead);            if (m_differencePrint != null) {                m_differencePrint.println(" \"" + texta +                "\" (length " + texta.length() + " vs. \"" +                textb + "\" (length " + textb.length() + ')');            }            return false;        }    }    /**     * Verifies that the current start or end tag names match.     *     * @return <code>true</code> if the names match, <code>false</code> if not     */    protected boolean matchNames() {        return m_parserA.getName().equals(m_parserB.getName()) &&            m_parserA.getNamespace().equals(m_parserB.getNamespace());    }    /**     * Compares a pair of documents by reading them in parallel from a pair of     * parsers. The comparison ignores differences in whitespace separating     * elements, but treats whitespace as significant within elements with only     * character data content.      *     * @param rdra reader for first document to be compared     * @param rdrb reader for second document to be compared     * @return <code>true</code> if the documents are the same,     * <code>false</code> if they're different     */    public boolean compare(Reader rdra, Reader rdrb) {        try {                    // set the documents and initialize            m_parserA.setInput(rdra);            m_parserB.setInput(rdrb);            boolean content = false;            String texta = "";            String textb = "";            boolean same = true;            while (true) {                                // start by collecting and moving past text content                if (m_parserA.getEventType() == XmlPullParser.TEXT) {                    texta = m_parserA.getText();                    m_parserA.next();                }                if (m_parserB.getEventType() == XmlPullParser.TEXT) {                    textb = m_parserB.getText();                    m_parserB.next();                }                                // now check actual tag state                int typea = m_parserA.getEventType();                int typeb = m_parserB.getEventType();                if (typea != typeb) {                    printError("Different document structure");                    return false;                } else if (typea == XmlPullParser.START_TAG) {                                        // compare start tags, attributes, and prior text                    content = true;                    if (!matchNames()) {                        printError("Different start tags");                        return false;                    } else {                        if (!matchAttributes()) {                            same = false;                        }                        if (!matchText(texta, textb,                            "Different text content between elements")) {                            same = false;                        }                    }                    texta = textb = "";                                    } else if (typea == XmlPullParser.END_TAG) {                                        // compare end tags and prior text                    if (!matchNames()) {                        printError("Different end tags");                        return false;                    }                    if (content) {                        if (!matchText(texta, textb, "Different text content")) {                            same = false;                        }                        content = false;                    } else {                        if (!matchText(texta, textb,                            "Different text content between elements")) {                            same = false;                        }                    }                    texta = textb = "";                                    } else if (typea == XmlPullParser.END_DOCUMENT) {                    return same;                }                                // advance both parsers to next component                m_parserA.next();                m_parserB.next();                            }        } catch (IOException ex) {            if (m_differencePrint != null) {                ex.printStackTrace(m_differencePrint);            }            return false;        } catch (XmlPullParserException ex) {            if (m_differencePrint != null) {                ex.printStackTrace(m_differencePrint);            }            return false;        }    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区日韩在线观看| 日本亚洲免费观看| 日韩视频在线一区二区| 波多野结衣中文一区| 婷婷久久综合九色国产成人 | 成人免费视频播放| 亚洲aaa精品| 亚洲另类春色国产| 久久久美女艺术照精彩视频福利播放 | 日韩国产欧美视频| 亚洲视频你懂的| 国产清纯白嫩初高生在线观看91| 欧美日韩国产一级片| a4yy欧美一区二区三区| 国产乱一区二区| 另类人妖一区二区av| 亚洲成年人影院| 亚洲日本乱码在线观看| 国产精品理论在线观看| 久久色.com| 精品女同一区二区| 日韩女优av电影| 日韩一区二区三区四区五区六区| 欧美唯美清纯偷拍| 一本到不卡精品视频在线观看| 风间由美一区二区av101| 狠狠色狠狠色综合| 精品亚洲国产成人av制服丝袜| 欧美aa在线视频| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲高清在线视频| 亚洲6080在线| 日韩精品91亚洲二区在线观看| 亚洲一区二区中文在线| 一区二区三区高清| 性做久久久久久免费观看 | 久久99精品久久久久久动态图 | 精品日韩在线一区| 日韩欧美亚洲国产另类| 制服丝袜亚洲精品中文字幕| 欧美精品一二三区| 欧美电影在线免费观看| 欧美一区二区三区啪啪| 欧美一区二区私人影院日本| 日韩欧美在线观看一区二区三区| 欧美日韩五月天| 9191久久久久久久久久久| 精品视频在线免费看| 欧美日韩极品在线观看一区| 欧美高清视频在线高清观看mv色露露十八| 欧美三级中文字| 欧美肥胖老妇做爰| 欧美成人精品福利| 国产欧美日韩另类视频免费观看 | 亚洲精品视频在线看| 一区二区三区美女视频| 亚洲一区二区三区四区在线免费观看| 亚洲一区二区三区视频在线| 天天射综合影视| 麻豆精品国产91久久久久久| 韩国v欧美v日本v亚洲v| 成人精品免费看| 色就色 综合激情| 在线成人免费视频| 久久久精品免费网站| 国产精品亲子乱子伦xxxx裸| 亚洲三级视频在线观看| 亚洲福利视频一区| 精品一区二区三区免费| 高清日韩电视剧大全免费| 91一区二区三区在线观看| 在线电影欧美成精品| 久久精品亚洲乱码伦伦中文| 亚洲蜜臀av乱码久久精品| 午夜精品久久久久久久久久久| 精品在线免费观看| 99国产精品视频免费观看| 欧美片网站yy| 精品国偷自产国产一区| 国产精品电影院| 日韩精品一二三| 成人黄色国产精品网站大全在线免费观看| 色综合久久久久综合体| 欧美一区二区三区小说| 欧美国产精品中文字幕| 午夜免费欧美电影| 成人h精品动漫一区二区三区| 欧美日韩一区不卡| 国产精品美女视频| 日本亚洲三级在线| 91蜜桃网址入口| 久久亚洲一级片| 性欧美大战久久久久久久久| 国产不卡在线播放| 欧美一区二区三区的| 亚洲视频网在线直播| 国产精品一区二区三区网站| 欧美视频一区在线| 成人欧美一区二区三区黑人麻豆 | 日韩女优电影在线观看| 亚洲免费三区一区二区| 国产一区二区调教| 91精品啪在线观看国产60岁| 亚洲三级电影网站| 国产成人综合在线| 日韩久久免费av| 亚洲高清免费在线| 一本到三区不卡视频| 国产免费成人在线视频| 蜜桃视频免费观看一区| 欧美午夜精品久久久久久孕妇 | 欧美图片一区二区三区| 国产精品久久久久一区二区三区 | 69av一区二区三区| 一区二区久久久| 99riav久久精品riav| 国产欧美日韩精品在线| 国内欧美视频一区二区 | 欧美激情综合五月色丁香小说| 日韩av电影天堂| 欧美日韩免费观看一区三区| 玉米视频成人免费看| 成人av网站免费| 亚洲国产精品成人综合| 国内成人自拍视频| 精品不卡在线视频| 激情综合五月婷婷| 欧美成人精品3d动漫h| 美女一区二区久久| 日韩一区二区三区在线观看| 日韩av午夜在线观看| 91.com视频| 美女脱光内衣内裤视频久久网站 | 麻豆国产精品777777在线| 欧美精品免费视频| 午夜av一区二区| 欧美顶级少妇做爰| 麻豆国产精品777777在线| 精品国产精品网麻豆系列| 久久国产尿小便嘘嘘尿| 亚洲精品一线二线三线| 经典三级一区二区| 欧美国产国产综合| 99国产欧美久久久精品| 亚洲午夜久久久久| 7777精品久久久大香线蕉| 青青草国产成人av片免费| 精品日产卡一卡二卡麻豆| 国产在线不卡一区| 国产精品天美传媒| 91在线小视频| 亚洲va国产va欧美va观看| 欧美日韩国产小视频在线观看| 午夜精品久久久| 日韩欧美第一区| 国产成a人亚洲精品| 亚洲三级免费观看| 91精品国产91久久综合桃花| 九九九久久久精品| 国产精品美女视频| 欧美日韩在线观看一区二区| 久久精品国产99| 国产精品天干天干在线综合| 色一区在线观看| 秋霞影院一区二区| 欧美国产精品中文字幕| 欧美三级中文字| 国产毛片一区二区| 亚洲一区二区三区在线播放| 欧美一卡二卡三卡| 成人av电影免费在线播放| 亚洲狠狠爱一区二区三区| 日韩精品一区二区三区swag| 成人av动漫在线| 秋霞av亚洲一区二区三| 国产欧美视频在线观看| 欧美日韩情趣电影| 国产白丝精品91爽爽久久| 亚洲韩国精品一区| 久久久久国产精品麻豆ai换脸| 一本一道波多野结衣一区二区| 日本成人在线看| 亚洲视频一二三区| 久久综合久久综合九色| 色综合久久久久久久久久久| 老汉av免费一区二区三区| 中文字幕日韩一区二区| 日韩欧美另类在线| 91成人在线精品| 国产一区二区三区黄视频 | 欧美一区二区久久久| 99久久精品国产毛片| 久久se精品一区精品二区| 亚洲精品乱码久久久久| 久久免费视频色| 欧美男人的天堂一二区| 日韩高清在线观看| 欧美年轻男男videosbes| 成人免费高清视频在线观看| 免费成人在线影院|