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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? xmltemplateengine.java

?? Groovy動(dòng)態(tài)語(yǔ)言 運(yùn)行在JVM中的動(dòng)態(tài)語(yǔ)言 可以方便的處理業(yè)務(wù)邏輯變化大的業(yè)務(wù)
?? JAVA
字號(hào):
package groovy.text;

import groovy.lang.Binding;
import groovy.lang.GroovyShell;
import groovy.lang.Script;
import groovy.lang.Writable;
import groovy.util.IndentPrinter;
import groovy.util.Node;
import groovy.util.XmlNodePrinter;
import groovy.util.XmlParser;
import groovy.xml.QName;

import java.io.IOException;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.StringWriter;
import java.io.Writer;
import java.lang.ref.WeakReference;
import java.util.HashMap;
import java.util.Map;

import javax.xml.parsers.ParserConfigurationException;

import org.codehaus.groovy.control.CompilationFailedException;
import org.codehaus.groovy.runtime.InvokerHelper;
import org.xml.sax.SAXException;

/**
 * Template engine for xml data input.
 *
 * @author Christian Stein
 */
public class XmlTemplateEngine extends TemplateEngine {

    private static class GspPrinter extends XmlNodePrinter {

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

        public GspPrinter(IndentPrinter out) {
            super(out, "\\\"");
        }

        protected void printGroovyTag(String tag, String text) {
            if (tag.equals("scriptlet")) {
                out.print(text);
                out.print("\n");
                return;
            }
            if (tag.equals("expression")) {
                printLineBegin();
                out.print("${");
                out.print(text);
                out.print("}");
                printLineEnd();
                return;
            }
            throw new RuntimeException("Unsupported tag named \"" + tag + "\".");
        }

        protected void printLineBegin() {
            out.print("out.print(\"");
            out.printIndent();
        }

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

        protected boolean printSpecialNode(Node node) {
            Object name = node.name();
            if (name != null && name instanceof QName) {
                /*
                 * FIXME Somethings wrong with the SAX- or XMLParser. Prefix should only contain 'gsp'?!
                 */
                String s = ((QName) name).getPrefix();
                if (s.startsWith("gsp:")) {
                    s = s.substring(4); // 4 = "gsp:".length()
                    if (s.length() == 0) {
                        throw new RuntimeException("No local part after 'gsp:' given in node " + node);
                    }
                    printGroovyTag(s, node.text());
                    return true;
                }
            }
            return false;
        }

    }

    private static class XmlTemplate implements Template {

        private final Script script;

        public XmlTemplate(Script script) {
            this.script = script;
        }

        public Writable make() {
            return make(new HashMap());
        }

        public Writable make(Map map) {
            if (map == null) {
                throw new IllegalArgumentException("map must not be null");
            }
            return new XmlWritable(script, new Binding(map));
        }

    }

    private static class XmlWritable implements Writable {

        private final Binding binding;
        private final Script script;
        private WeakReference result;

        public XmlWritable(Script script, Binding binding) {
            this.script = script;
            this.binding = binding;
            this.result = new WeakReference(null);
        }

        public Writer writeTo(Writer out) {
            Script scriptObject = InvokerHelper.createScript(script.getClass(), binding);
            PrintWriter pw = new PrintWriter(out);
            scriptObject.setProperty("out", pw);
            scriptObject.run();
            pw.flush();
            return out;
        }

        public String toString() {
            if (result.get() != null) {
                return result.get().toString();
            }
            String string = writeTo(new StringWriter(1024)).toString();
            result = new WeakReference(string);
            return string;
        }

    }

    public static final String DEFAULT_INDENTION = "  ";

    private final GroovyShell groovyShell;
    private final XmlParser xmlParser;
    private String indention;

    public XmlTemplateEngine() throws SAXException, ParserConfigurationException {
        this(DEFAULT_INDENTION, false);
    }

    public XmlTemplateEngine(String indention, boolean validating) throws SAXException, ParserConfigurationException {
        this(new XmlParser(validating, true), new GroovyShell(), indention);
    }

    public XmlTemplateEngine(XmlParser xmlParser, GroovyShell groovyShell, String indention) {
        this.groovyShell = groovyShell;
        this.xmlParser = xmlParser;
        this.indention = indention;
    }

    public Template createTemplate(Reader reader) throws CompilationFailedException, ClassNotFoundException, IOException {
        Node root = null;
        try {
            root = xmlParser.parse(reader);
        } catch (SAXException e) {
            throw new RuntimeException("Parsing XML source failed.", e);
        }

        if (root == null) {
            throw new IOException("Parsing XML source failed: root node is null.");
        }

        // new NodePrinter().print(root);
        // new XmlNodePrinter().print(root);

        StringWriter writer = new StringWriter(1024);
        writer.write("/* Generated by XmlTemplateEngine */\n");
        new GspPrinter(new PrintWriter(writer), DEFAULT_INDENTION).print(root);
        String scriptText = writer.toString();

        // System.err.println("\n-\n" + scriptText + "\n-\n");

        Script script = groovyShell.parse(scriptText);
        Template template = new XmlTemplate(script);
        return template;
    }

    public String getIndention() {
        return indention;
    }

    public void setIndention(String indention) {
        if (indention == null) {
            indention = DEFAULT_INDENTION;
        }
        this.indention = indention;
    }

    public String toString() {
        return "XmlTemplateEngine";
    }

}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人小视频| 国产精品99久久久| 久久久久国色av免费看影院| 99久久久精品免费观看国产蜜| 亚洲精品成人少妇| 国产午夜精品一区二区| 欧美日本一区二区三区四区| 99久久精品久久久久久清纯| 麻豆国产一区二区| 亚洲一区二区精品久久av| 欧美国产亚洲另类动漫| 69堂精品视频| 在线视频你懂得一区二区三区| 国产美女娇喘av呻吟久久| 亚洲动漫第一页| 亚洲视频 欧洲视频| 国产午夜亚洲精品午夜鲁丝片| 欧美一区二区三区性视频| 日本伦理一区二区| www.亚洲激情.com| 国产不卡在线播放| 激情综合色丁香一区二区| 日韩精品久久理论片| 一区二区三区在线观看视频| 日韩一区中文字幕| 国产人成一区二区三区影院| 久久综合九色综合久久久精品综合 | www.日韩精品| 国产高清久久久| 国产一区二区网址| 精品一区二区三区在线观看| 欧美bbbbb| 麻豆91在线观看| 日av在线不卡| 蜜桃av一区二区| 丝袜亚洲另类欧美综合| 亚洲第一激情av| 亚洲午夜精品网| 亚洲一区二区精品3399| 亚洲一区二区四区蜜桃| 亚洲国产精品久久艾草纯爱| 亚洲综合成人在线| 亚洲一区二区影院| 日韩激情一二三区| 麻豆精品在线看| 国产原创一区二区| 成人禁用看黄a在线| 99精品视频一区二区三区| 91丝袜美腿高跟国产极品老师 | 天天色天天操综合| 丝瓜av网站精品一区二区| 天天射综合影视| 老司机精品视频导航| 国产麻豆91精品| 成人av电影免费观看| 99久久久免费精品国产一区二区| 色成人在线视频| 9191成人精品久久| 久久综合久色欧美综合狠狠| 国产精品丝袜久久久久久app| 亚洲色图制服诱惑 | 久久久久免费观看| 亚洲国产精品精华液2区45| 亚洲欧美综合网| 亚洲成人你懂的| 久久激情综合网| 成人精品一区二区三区中文字幕| 91污在线观看| 欧美一区二区三区男人的天堂| 久久色视频免费观看| 日韩美女久久久| 天堂蜜桃一区二区三区| 国产毛片精品视频| 欧美在线观看一区| 欧美mv日韩mv国产| 亚洲视频中文字幕| 美脚の诱脚舐め脚责91| zzijzzij亚洲日本少妇熟睡| 欧美日韩成人综合| 欧美国产激情二区三区| 亚洲一区二区三区美女| 国产在线播精品第三| 色偷偷一区二区三区| 精品捆绑美女sm三区| 一区二区三区在线免费播放| 激情五月激情综合网| 在线观看免费一区| 国产人久久人人人人爽| 日本在线不卡一区| 99麻豆久久久国产精品免费优播| 91精品欧美一区二区三区综合在 | 亚洲人成网站色在线观看| 全国精品久久少妇| 色噜噜狠狠成人网p站| 久久久久久久国产精品影院| 亚洲成精国产精品女| 99精品热视频| 26uuu国产日韩综合| 亚洲第四色夜色| 99精品一区二区三区| 26uuu国产在线精品一区二区| 亚洲午夜精品久久久久久久久| 国产黄人亚洲片| 欧美一级一区二区| 夜夜操天天操亚洲| 成人午夜又粗又硬又大| 日韩精品一区二| 亚洲a一区二区| 在线观看网站黄不卡| 国产精品沙发午睡系列990531| 理论片日本一区| 欧美日韩国产免费一区二区 | 不卡av电影在线播放| 久久先锋影音av鲁色资源网| 日韩精品三区四区| 欧洲精品一区二区| 亚洲九九爱视频| 91视频www| 国产精品福利影院| 粉嫩一区二区三区在线看| 26uuu国产电影一区二区| 欧美96一区二区免费视频| 欧美视频日韩视频| 一区二区三区在线观看网站| av影院午夜一区| 国产精品久久网站| 成人av网址在线| 国产精品视频观看| 波多野结衣欧美| 国产精品嫩草99a| 不卡的av网站| 亚洲人成人一区二区在线观看| av一本久道久久综合久久鬼色| 国产精品视频看| aaa亚洲精品| 最近中文字幕一区二区三区| 成人三级在线视频| 中文字幕亚洲不卡| 91一区二区三区在线播放| 亚洲欧美日韩国产综合在线| 99re成人精品视频| 一区二区在线免费观看| 欧美亚洲丝袜传媒另类| 亚洲影视在线播放| 国产精品久久精品日日| 大胆亚洲人体视频| 国产精品高潮久久久久无| 一本久久综合亚洲鲁鲁五月天 | 欧美一卡二卡三卡| 九九九久久久精品| 国产亚洲精品bt天堂精选| 成人久久久精品乱码一区二区三区| 日本一区二区高清| 色偷偷成人一区二区三区91| 亚洲国产成人va在线观看天堂| 欧美丰满少妇xxxxx高潮对白| 奇米精品一区二区三区在线观看一| 2021久久国产精品不只是精品| 国产乱码字幕精品高清av| 国产精品不卡在线| 欧美在线你懂得| 韩国女主播成人在线| 亚洲国产精品av| 欧美午夜一区二区三区免费大片| 日韩精品91亚洲二区在线观看| 26uuu精品一区二区| 99国产欧美久久久精品| 五月激情六月综合| 久久免费视频色| 日本高清不卡一区| 精品一区二区三区免费毛片爱| 亚洲国产激情av| 欧美日韩精品一区二区| 国产一区高清在线| 一区二区成人在线观看| 日韩欧美自拍偷拍| 91在线码无精品| 麻豆精品久久久| 国产精品久久精品日日| 欧美一区二区三区婷婷月色| 成人黄色在线网站| 视频一区二区三区入口| 国产精品丝袜一区| 宅男在线国产精品| 91在线无精精品入口| 伦理电影国产精品| 亚洲色图欧洲色图婷婷| 欧美zozozo| 欧美日精品一区视频| 国产福利91精品一区| 日韩激情中文字幕| 一区二区中文视频| 26uuu色噜噜精品一区| 欧洲一区在线观看| 国产一区在线不卡| 午夜精品在线看| 亚洲视频一区二区免费在线观看| 精品少妇一区二区三区日产乱码 | 午夜视频在线观看一区二区三区| 欧美国产一区视频在线观看|