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

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

?? xmlnodeprinter.java

?? Groovy動態語言 運行在JVM中的動態語言 可以方便的處理業務邏輯變化大的業務
?? JAVA
字號:
/*
 $Id: XmlNodePrinter.java 2542 2005-07-13 18:54:45Z cstein $

 Copyright 2003 (C) James Strachan and Bob Mcwhirter. All Rights Reserved.

 Redistribution and use of this software and associated documentation
 ("Software"), with or without modification, are permitted provided
 that the following conditions are met:

 1. Redistributions of source code must retain copyright
 statements and notices.  Redistributions must also contain a
 copy of this document.

 2. 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.

 3. The name "groovy" must not be used to endorse or promote
 products derived from this Software without prior written
 permission of The Codehaus.  For written permission,
 please contact info@codehaus.org.

 4. Products derived from this Software may not be called "groovy"
 nor may "groovy" appear in their names without prior written
 permission of The Codehaus. "groovy" is a registered
 trademark of The Codehaus.

 5. Due credit should be given to The Codehaus -
 http://groovy.codehaus.org/

 THIS SOFTWARE IS PROVIDED BY THE CODEHAUS AND CONTRIBUTORS
 ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
 NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
 THE CODEHAUS OR ITS CONTRIBUTORS BE LIABLE FOR ANY 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 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 OF THE POSSIBILITY OF SUCH DAMAGE.

 */

package groovy.util;

import groovy.xml.QName;

import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.codehaus.groovy.runtime.InvokerHelper;

/**
 * Prints a node with all childs in XML format.
 * 
 * @see groovy.util.NodePrinter
 * @author Christian Stein
 */
public class XmlNodePrinter {

    protected final IndentPrinter out;
    private final String quote;

    public XmlNodePrinter() {
        this(new PrintWriter(new OutputStreamWriter(System.out)));
    }

    public XmlNodePrinter(PrintWriter out) {
        this(out, "  ");
    }

    public XmlNodePrinter(PrintWriter out, String indent) {
        this(out, indent, "\"");
    }

    public XmlNodePrinter(PrintWriter out, String indent, String quote) {
        this(new IndentPrinter(out, indent), quote);
    }

    public XmlNodePrinter(IndentPrinter out, String quote) {
        if (out == null) {
            throw new IllegalArgumentException("Argument 'IndentPrinter out' must not be null!");
        }
        this.out = out;
        this.quote = quote;
    }

    public String getNameOfNode(Node node) {
        if (node == null) {
            throw new IllegalArgumentException("Node must not be null!");
        }
        Object name = node.name();
        if (name instanceof QName) {
            QName qname = (QName) name;
            return /* qname.getPrefix() + ":" + */qname.getLocalPart();
        }
        return name.toString();
    }

    public boolean isEmptyElement(Node node) {
        if (node == null) {
            throw new IllegalArgumentException("Node must not be null!");
        }
        if (!node.children().isEmpty()) {
            return false;
        }
        String text = node.text();
        if (text.length() > 0) {
            return false;
        }
        return true;
    }

    public void print(Node node) {
        /*
         * Handle empty elements like '<br/>', '<img/> or '<hr noshade="noshade"/>.
         */
        if (isEmptyElement(node)) {
            // System.err.println("empty-dead");
            printLineBegin();
            out.print("<");
            out.print(getNameOfNode(node));
            printNameAttributes(node.attributes());
            out.print("/>");
            printLineEnd(); // "node named '" + node.name() + "'"
            out.flush();
            return;
        }

        /*
         * Handle GSP tag element!
         */
        if (printSpecialNode(node)) {
            // System.err.println("special-dead");
            out.flush();
            return;
        }

        /*
         * Handle normal element like <html> ... </html>.
         */
        Object value = node.value();
        if (value instanceof List) {
            printName(node, true);
            printList((List) value);
            printName(node, false);
            out.flush();
            return;
        }

        /*
         * Still here?!
         */
        throw new RuntimeException("Unsupported node value: " + node.value());
    }

    protected void printLineBegin() {
        out.printIndent();
    }

    protected void printLineEnd() {
        printLineEnd(null);
    }

    protected void printLineEnd(String comment) {
        if (comment != null) {
            out.print(" <!-- ");
            out.print(comment);
            out.print(" -->");
        }
        out.print("\n");
    }

    protected void printList(List list) {
        out.incrementIndent();
        for (Iterator iter = list.iterator(); iter.hasNext();) {
            Object value = iter.next();
            /*
             * If the current value is a node, recurse into that node.
             */
            if (value instanceof Node) {
                print((Node) value);
                continue;
            }
            /*
             * Print out "simple" text nodes.
             */
            printLineBegin();
            out.print(InvokerHelper.toString(value));
            printLineEnd();
        }
        out.decrementIndent();
    }

    protected void printName(Node node, boolean begin) {
        if (node == null) {
            throw new NullPointerException("Node must not be null.");
        }
        Object name = node.name();
        if (name == null) {
            throw new NullPointerException("Name must not be null.");
        }
        printLineBegin();
        out.print("<");
        if (!begin) {
            out.print("/");
        }
        out.print(getNameOfNode(node));
        if (begin) {
            printNameAttributes(node.attributes());
        }
        out.print(">");
        printLineEnd();
    }

    protected void printNameAttributes(Map attributes) {
        if (attributes == null || attributes.isEmpty()) {
            return;
        }
        out.print(" ");
        boolean first = true;
        for (Iterator iter = attributes.entrySet().iterator(); iter.hasNext();) {
            Map.Entry entry = (Map.Entry) iter.next();
            if (first) {
                first = false;
            } else {
                out.print(" ");
            }
            out.print(entry.getKey().toString());
            out.print("=");
            Object value = entry.getValue();
            if (value instanceof String) {
                out.print(quote);
                out.print((String) value);
                out.print(quote);
                continue;
            }
            out.print(InvokerHelper.toString(value));
        }
    }

    protected boolean printSpecialNode(Node node) {
        return false;
    }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲小说欧美激情另类| 亚洲国产精品久久久男人的天堂| 精品国产凹凸成av人网站| 久久久夜色精品亚洲| 亚洲国产成人在线| 一区二区三区在线播| 美腿丝袜亚洲一区| 高清久久久久久| 91传媒视频在线播放| 日韩欧美的一区二区| 中文幕一区二区三区久久蜜桃| 亚洲人成亚洲人成在线观看图片| 亚洲18色成人| 风间由美中文字幕在线看视频国产欧美| 91视频在线观看免费| 制服丝袜av成人在线看| 国产精品福利一区| 一区二区三区精品视频在线| 欧美日韩国产综合一区二区三区| 这里是久久伊人| 日本一区二区不卡视频| 日日夜夜免费精品视频| 国产91在线观看| 91精品国产欧美一区二区成人| 中文字幕成人av| 日本成人在线视频网站| 91婷婷韩国欧美一区二区| 中文字幕电影一区| 亚洲国产人成综合网站| 波多野结衣欧美| 欧美www视频| 亚洲成av人片一区二区梦乃| 成人一级黄色片| 日韩亚洲电影在线| 亚洲一区免费在线观看| 成人禁用看黄a在线| 精品国产3级a| 精品久久人人做人人爱| 久久精品免视看| 日韩三级av在线播放| 欧美激情在线观看视频免费| 日本视频一区二区| 欧美怡红院视频| 国产精品天美传媒| 国产成人在线观看| 日韩你懂的在线播放| 婷婷成人综合网| 欧美色精品在线视频| 一区二区三区在线视频观看| 97久久超碰国产精品| 久久久精品一品道一区| 精品一区二区影视| 日韩午夜电影在线观看| 手机精品视频在线观看| 在线播放中文字幕一区| 午夜成人在线视频| 欧美精品久久99| 日韩精品91亚洲二区在线观看| 欧美日韩视频在线第一区| 亚洲国产美国国产综合一区二区| 欧美在线播放高清精品| 亚洲国产另类av| 欧美日韩高清一区二区三区| 国产成人午夜视频| 欧美不卡视频一区| 国产一区二区三区电影在线观看 | 一区二区三区精密机械公司| 99久久777色| 亚洲精品视频在线观看网站| 色综合久久九月婷婷色综合| 亚洲精品五月天| 欧美日韩一区二区欧美激情| 亚洲18影院在线观看| 欧美一区二区三区电影| 激情深爱一区二区| 欧美激情一区在线观看| 99久精品国产| 午夜精彩视频在线观看不卡| 欧美不卡在线视频| 成人伦理片在线| 洋洋成人永久网站入口| 欧美一区二区三区成人| 国产精品91xxx| 亚洲免费高清视频在线| 欧美视频一区二区三区在线观看| 日韩激情在线观看| 国产日产欧美精品一区二区三区| 成人av在线一区二区三区| 亚洲激情网站免费观看| 日韩视频免费观看高清完整版在线观看 | 大美女一区二区三区| 亚洲精品国产成人久久av盗摄| 欧美成人性战久久| 亚洲欧美国产77777| 性欧美大战久久久久久久久| 日韩欧美一区电影| 成人一道本在线| 亚洲mv在线观看| 久久久99久久| 欧美日韩黄色影视| 国产成人在线视频网站| 亚洲一区二区欧美| 久久久青草青青国产亚洲免观| 91在线观看免费视频| 免费不卡在线视频| 亚洲免费在线看| 久久久久久日产精品| 欧美视频一区二区三区四区| 国产伦精品一区二区三区免费迷 | 91在线播放网址| 日韩成人av影视| 久久久国产午夜精品 | 99re在线视频这里只有精品| 爽好多水快深点欧美视频| 中文字幕第一区综合| 日韩午夜中文字幕| 在线免费观看不卡av| 国产精品夜夜嗨| 天堂va蜜桃一区二区三区| 亚洲欧洲日韩一区二区三区| 精品裸体舞一区二区三区| 欧美吞精做爰啪啪高潮| 99麻豆久久久国产精品免费| 狠狠色丁香久久婷婷综| 午夜精品福利一区二区蜜股av| 国产精品久久免费看| 精品999久久久| 91精品国产一区二区| 欧洲一区在线观看| av亚洲产国偷v产偷v自拍| 韩国毛片一区二区三区| 青青草伊人久久| 亚洲电影在线免费观看| 精品久久国产97色综合| proumb性欧美在线观看| 久久你懂得1024| 这里只有精品免费| 欧美视频一二三区| 在线一区二区三区做爰视频网站| 成人久久18免费网站麻豆| 国产乱子伦视频一区二区三区 | 亚洲一区二区三区影院| 亚洲视频一区二区在线| 亚洲欧美偷拍另类a∨色屁股| 久久久国产精品午夜一区ai换脸| 日韩天堂在线观看| 日韩一级片在线播放| 91精品久久久久久久久99蜜臂| 欧美日韩视频第一区| 欧美日韩中文字幕一区二区| 91久久线看在观草草青青| 91色九色蝌蚪| 91高清视频在线| 欧美午夜在线观看| 欧美高清视频www夜色资源网| 欧美日韩视频专区在线播放| 欧美日韩一区二区三区不卡| 欧美喷潮久久久xxxxx| 88在线观看91蜜桃国自产| 制服丝袜亚洲网站| 精品国产制服丝袜高跟| 久久综合九色欧美综合狠狠| 国产丝袜欧美中文另类| 国产精品视频看| 曰韩精品一区二区| 天天免费综合色| 激情综合网av| 99视频精品全部免费在线| 欧美午夜精品久久久| 91精品国产品国语在线不卡| 久久亚洲精华国产精华液| 中文字幕一区二区不卡| 亚洲h动漫在线| 国产精品亚洲综合一区在线观看| 99久久综合99久久综合网站| 欧美午夜理伦三级在线观看| 91精品国产综合久久久久久| 久久久久国色av免费看影院| 国产精品进线69影院| 亚洲一区av在线| 精品亚洲成a人| 91啪九色porn原创视频在线观看| 欧美三级电影网站| 精品av久久707| 一区二区在线观看不卡| 蓝色福利精品导航| 91香蕉视频在线| 日韩欧美不卡在线观看视频| 中文字幕乱码日本亚洲一区二区| 一区二区三区中文字幕电影| 另类中文字幕网| 色综合色狠狠天天综合色| 日韩欧美另类在线| 亚洲乱码中文字幕| 国内久久婷婷综合| 欧美在线看片a免费观看| 久久先锋资源网| 亚欧色一区w666天堂| 成人免费看的视频| 欧美电影免费观看高清完整版|