java使用xstream框架生成xml文件

1 JAVA代码生成XML框架

主要依赖

        
            com.thoughtworks.xstream
            xstream
            1.4.20
        

2 代码如下, 主要是内部标签嵌套规则, 还可以把XML对象转换成bean对象

package cn.djrj.web.controller.indicatorManage.xml.module;

import cn.djrj.common.utils.StringUtils;
import cn.djrj.system.domain.SysUseModule;
import cn.djrj.system.domain.SysUseModuleParam;
import com.google.common.collect.ImmutableMap;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.naming.NoNameCoder;
import com.thoughtworks.xstream.io.xml.Xpp3Driver;

import java.util.*;
import java.util.stream.Collectors;

public class ModuleCombineUtil {

    public static void main(String args[]) {
        List list = getSysIndicatorCombines();

        List shortlist = getShortbar();

        List weblist = getWebTag();

        toXML(list,shortlist,weblist);
    }


    //组装生成XML文件的功能配置
    public static String createXML(List list, Map configParam) {
        if (null == list || list.isEmpty()) {
            throw new RuntimeException("创建XML的参数为空,无法生成");
        }
        // 生成menu标签
        List itemList = new ArrayList<>();
        // 生成shorbar标签
        List shortBarList = new ArrayList<>();
        // 生成web标签
        List webList = new ArrayList<>();

        // shortbar 一级目录
        ShortbarItem shortbarItem = new ShortbarItem();
        shortbarItem.setType(3);
        shortbarItem.setSort(100);
        shortBarList.add(shortbarItem);

        list.forEach(sysUseModule -> {

            Map configParams;
            //menu标签 功能类型
            //if (null != sysUseModule.getUseType() && "0".equals(sysUseModule.getUseType()) || "3".equals(sysUseModule.getUseType()) ) {
                //导航区域,0=顶部
                if (null != sysUseModule.getNavigationArea() && "0".equals(sysUseModule.getNavigationArea())){
                    //menu 标签
                    extractedMenu(configParam, itemList, sysUseModule);
                } else if (null != sysUseModule.getNavigationArea() ) { // shortbar标签
                    //导航1
                    if ("1".equals(sysUseModule.getNavigationArea())) {
                        configParams = new HashMap<>();
                        getStrToMap(sysUseModule.getModuleParamId(), configParam,configParams);

                        ShortbarItem shortbarItem0 = new ShortbarItem();
                        shortbarItem0.setTitle(sysUseModule.getName());
                        shortbarItem0.setType(0);
                        shortbarItem0.setImage(configParams.getOrDefault("image", null));
                        shortbarItem0.setImageSel(configParams.getOrDefault("image_sel", null));
                        shortbarItem0.setCmd(configParams.getOrDefault("cmd", null));
                        shortbarItem0.setTip(sysUseModule.getCode());

                        //间距特殊处理
                        shortbarItem0.setSeparator(configParams.getOrDefault("separator", null) != null ? true : null);
                        shortbarItem0.setFunType(configParams.getOrDefault("funType", null) == null ? null : Integer.valueOf(configParams.get("funType")));
                        shortbarItem0.setType(configParams.getOrDefault("type", null) == null ? 0 : Integer.parseInt(configParams.get("type")));
                        shortbarItem0.setSort(0);
                        if (null != configParams.getOrDefault("separator", null) && configParams.getOrDefault("funType", null) == null) {
                            shortbarItem0.setType(1);
                            shortbarItem0.setTitle("");
                            shortbarItem0.setImage(null);
                            shortbarItem0.setImageSel(null);
                            shortbarItem0.setCmd(null);
                            shortbarItem0.setTip(null);
                            shortbarItem0.setSeparator(true);
                        }
                        shortbarItem0.setContext(configParam.getOrDefault(sysUseModule.getModuleParamId(), new SysUseModuleParam()).getContext());

                        shortBarList.add(shortbarItem0);
                    } else if (Arrays.asList(new String[]{"2", "3", "4"}).contains(sysUseModule.getNavigationArea())) {
                        Map paramChildernMap = getStrToMapChildern(sysUseModule.getModuleParamId(), configParam,sysUseModule.getNavigationArea());
                        //二级目录
                        ShortbarItem shortbarItem2 = new ShortbarItem();
                        shortbarItem2.setTitle(sysUseModule.getName());
                        shortbarItem2.setType(1);
                        if (null != sysUseModule.getChildern() && sysUseModule.getChildern().size() > 0) {
                            shortbarItem2.setType(4);
                        }
                        shortbarItem2.setImage(paramChildernMap.getOrDefault("image", null));
                        shortbarItem2.setImageSel(paramChildernMap.getOrDefault("image_sel", null));
                        shortbarItem2.setCmd(paramChildernMap.getOrDefault("cmd", null));

                        //生成XML的CMD固定属性
                        if (null != sysUseModule.getUseType() && "3".equals(sysUseModule.getUseType())) {
                            shortbarItem2.setCmd("zbzh:" + sysUseModule.getName());
                        }
                        shortbarItem2.setImageHover(paramChildernMap.getOrDefault("image_hover", null));
                        shortbarItem2.setContext(configParam.getOrDefault(sysUseModule.getModuleParamId(), new SysUseModuleParam()).getContext());

                        shortbarItem.getItem().add(shortbarItem2);
                        if (null != sysUseModule.getChildern() && sysUseModule.getChildern().size() > 0) {
                            // 三级目录数据转换
                            for (SysUseModule module : sysUseModule.getChildern()) {
                                configParams = new HashMap<>();
                                getStrToMap(module.getModuleParamId(), configParam,configParams);
                                ShortbarItem shortChildern = new ShortbarItem();
                                shortChildern.setTitle(module.getName());
                                shortChildern.setTip(module.getCode());
                                shortChildern.setType(1);
                                //shortChildern.setImage(configParams.getOrDefault("image", null));
                                //shortChildern.setImageSel(configParams.getOrDefault("image_sel", null));
                                shortChildern.setCmd(configParams.getOrDefault("cmd", null));
                                //shortChildern.setImageHover(configParams.getOrDefault("image_hover", null));
                                shortChildern.setContext(configParam.getOrDefault(module.getModuleParamId(), new SysUseModuleParam()).getContext());

                                shortbarItem2.getItem().add(shortChildern);
                            }
                        }
                    }
                }

                // web标签
                if (null != sysUseModule.getUseType() && "1".equals(sysUseModule.getUseType())) {
                    extractedTOweb(configParam, webList, sysUseModule,false);
                }
                // 二级网页
                if (null != sysUseModule.getChildern() && sysUseModule.getChildern().size() > 0) {
                   for (SysUseModule module : sysUseModule.getChildern()) {
                        if (null != module.getUseType() && "1".equals(module.getUseType())) {
                            extractedTOweb(configParam, webList, module,false);
                        }
                    }
                }
        });

        return toXML(itemList, shortBarList.stream().sorted(Comparator.comparing(ShortbarItem::getSort)).collect(Collectors.toList()), webList);
    }

    // menu功能菜单
    private static void extractedMenu(Map configParam, List itemList, SysUseModule sysUseModule) {
        Map configParams;
        ItemSet itemSet = new ItemSet();
        itemSet.setTitle(sysUseModule.getName());
        itemSet.setTip(sysUseModule.getCode());

        configParams = new HashMap<>();
        getStrToMap(sysUseModule.getModuleParamId(), configParam,configParams);
        itemSet.setCmd(configParams.getOrDefault("cmd", null));
        if (null != configParams.getOrDefault("sel", null)) {
            itemSet.setSel(Integer.valueOf(configParams.get("sel")));
        }
        itemSet.setType(0);
        itemSet.setContext(configParam.getOrDefault(sysUseModule.getModuleParamId(), new SysUseModuleParam()).getContext());

        if (null != sysUseModule.getChildern() && sysUseModule.getChildern().size() > 0) {
            // 二级目录数据转换
            for (SysUseModule module : sysUseModule.getChildern()) {
                configParams = new HashMap<>();
                 getStrToMap(module.getModuleParamId(), configParam,configParams);
                ItemSet itemChildern = new ItemSet();
                itemChildern.setTitle(module.getName());
                itemChildern.setFunType(1);
                itemChildern.setTip(module.getCode());
                itemChildern.setCmd(configParams.getOrDefault("cmd", null));
                //生成XML的CMD固定属性
                if (null != module.getUseType() && "3".equals(module.getUseType())) {
                    itemChildern.setCmd("zbzh:" + module.getName());
                }
                //间距特殊处理
                itemChildern.setSeparator(configParams.getOrDefault("separator", null) != null ? true : null);
                itemChildern.setFunType(configParams.getOrDefault("funType", null) == null ? null : Integer.valueOf(configParams.get("funType")));
                //分隔符处理
                if (null != configParams.getOrDefault("separator", null) && configParams.getOrDefault("funType", null) == null) {
                    itemChildern.setType(1);
                    itemChildern.setFunType(null);
                    itemChildern.setTitle("");
                    itemChildern.setTip(null);
                    itemChildern.setCmd(null);
                    itemChildern.setSeparator(true);
                }

                itemChildern.setContext(configParam.getOrDefault(module.getModuleParamId(), new SysUseModuleParam()).getContext());

                itemSet.getItem().add(itemChildern);
            }
            itemSet.setFunType(2);
        }
        itemList.add(itemSet);
    }

    // web标签封装数据
    private static void extractedTOweb(Map configParam, List webList, SysUseModule sysUseModule,boolean flag) {
        Map paramWebMap = new HashMap<>();
        getStrToMap(sysUseModule.getModuleParamId(), configParam,paramWebMap);
        UrlTag web = new UrlTag();
        web.setTitle(sysUseModule.getName());
        web.setTip(sysUseModule.getCode());
        if ("1".equals(sysUseModule.getOpenType())) {
            web.setOpen(2);
        } else if ("2".equals(sysUseModule.getOpenType())) {
            web.setOpen(1);
        }
        web.setOpen(0);
        web.setWeb(sysUseModule.getUrl());
        web.setId(paramWebMap.getOrDefault("id", null));
        web.setContext(configParam.getOrDefault(sysUseModule.getModuleParamId(), new SysUseModuleParam()).getContext());

        if (StringUtils.isNotBlank(sysUseModule.getConfigXmlParam())) {
            String[] str = sysUseModule.getConfigXmlParam().split(",");
            for (String p : str) {
                Ptag ptag = new Ptag();
                ptag.setType(p);
                web.getP().add(ptag);
            }
        }
        webList.add(web);
        if (null != sysUseModule.getChildern() && sysUseModule.getChildern().size() > 0 && flag) {
            for (SysUseModule module : sysUseModule.getChildern()) {
                paramWebMap = new HashMap<>();
                getStrToMap(module.getModuleParamId(), configParam,paramWebMap);
                UrlTag webChildern = new UrlTag();
                webChildern.setTitle(module.getName());
                webChildern.setTip(module.getCode());
                if ("1".equals(module.getOpenType())) {
                    webChildern.setOpen(2);
                } else if ("2".equals(module.getOpenType())) {
                    webChildern.setOpen(1);
                }
                webChildern.setOpen(0);
                webChildern.setWeb(module.getUrl());
                webChildern.setContext(configParam.getOrDefault(module.getModuleParamId(), new SysUseModuleParam()).getContext());

                webChildern.setId(paramWebMap.getOrDefault("id", null));
                if (StringUtils.isNotBlank(module.getConfigXmlParam())) {
                    String[] str = module.getConfigXmlParam().split(",");
                    for (String p : str) {
                        Ptag ptag = new Ptag();
                        ptag.setType(p);
                        webChildern.getP().add(ptag);
                    }
                }
                webList.add(webChildern);
            }
        }
    }

    public static String toXML(List list,List shortbarItemList,List weblist) {
        Config config = new Config();
        // menu标签
        Menu menu = new Menu();
        config.setMenu(menu);
        menu.setItem(list);

        // Shortbar标签
        Shortbar shortbar = new Shortbar();
        config.setShortbar(shortbar);
        shortbar.setItem(shortbarItemList);

        // Web标签
        Web web = new Web();
        config.setWeb(web);
        web.setUrl(weblist);

        //special 标签
        Special special = new Special();
        config.setSpecial(special);
        special.setZh(getSpecialZhTag());

        //fs_main 标签
        FsMain fsMain = new FsMain();
        config.setFs_main(fsMain);
        fsMain.setZh(getFsMainTag());

        //fs_sub 标签
        FsSub fsSub = new FsSub();
        config.setFs_sub(fsSub);
        fsSub.setZh(getfsSubZhTag());

        //kx_main 标签
        KxMain kxMain = new KxMain();
        config.setKx_main(kxMain);
        kxMain.setZh(getkxMainTag());

        //kx_sub 标签
        KxSub kxsub = new KxSub();
        config.setKx_sub(kxsub);
        kxsub.setZh(getKxSubZhTag());

        XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
        //不加设置, 注解别名不生效
        xStream.autodetectAnnotations(true);

        xStream.alias("config", Config.class);
        xStream.alias("menu", Menu.class);
        xStream.alias("item", ItemSet.class);
        /  ignore
/*        xStream.omitField(ItemSet.class, "draw");;*/

        // menu 标签 list数据属性
        xStream.addImplicitCollection(Menu.class, "item", "item", ItemSet.class);

        xStream.useAttributeFor(ItemSet.class, "title");
        xStream.useAttributeFor(ItemSet.class, "type");
        xStream.useAttributeFor(ItemSet.class, "sel");
        xStream.useAttributeFor(ItemSet.class, "funType");
        xStream.useAttributeFor(ItemSet.class, "tip");
        xStream.useAttributeFor(ItemSet.class, "cmd");
        xStream.useAttributeFor(ItemSet.class, "separator");
        xStream.useAttributeFor(ItemSet.class, "context");
        xStream.omitField(ItemSet.class, "context");

        xStream.addImplicitCollection(ItemSet.class, "item");

        // shortbar 标签
        xStream.addImplicitCollection(Shortbar.class, "item", "item", ShortbarItem.class);

        xStream.alias("shortbar", Shortbar.class);
        xStream.alias("item", ShortbarItem.class);
        //xStream.aliasField("image_sel",ShortbarItem.class,"image_sel");

        xStream.useAttributeFor(ShortbarItem.class, "title");
        xStream.useAttributeFor(ShortbarItem.class, "image");
        xStream.useAttributeFor(ShortbarItem.class, "imageSel");
        xStream.useAttributeFor(ShortbarItem.class, "type");
        xStream.useAttributeFor(ShortbarItem.class, "funType");
        xStream.useAttributeFor(ShortbarItem.class, "cmd");
        xStream.useAttributeFor(ShortbarItem.class, "tip");
        xStream.useAttributeFor(ShortbarItem.class, "separator");
        xStream.useAttributeFor(ShortbarItem.class, "imageHover");
        xStream.omitField(ShortbarItem.class, "sort");
        xStream.useAttributeFor(ShortbarItem.class, "context");
        xStream.omitField(ShortbarItem.class, "context");
        xStream.addImplicitCollection(ShortbarItem.class, "item");

        // web标签
        xStream.alias("web", Web.class);
        xStream.alias("url", UrlTag.class);
        xStream.useAttributeFor(UrlTag.class, "title");
        xStream.useAttributeFor(UrlTag.class, "web");
        xStream.useAttributeFor(UrlTag.class, "open");
        xStream.useAttributeFor(UrlTag.class, "fixed");
        xStream.useAttributeFor(UrlTag.class, "tip");
        xStream.useAttributeFor(UrlTag.class, "id");
        xStream.useAttributeFor(UrlTag.class, "context");
        xStream.omitField(UrlTag.class, "context");

        xStream.addImplicitCollection(Web.class, "url");
        xStream.addImplicitCollection(UrlTag.class, "p", "p", Ptag.class);
        xStream.useAttributeFor(Ptag.class, "type");

        //special 标签
        xStream.alias("special", Special.class);
        xStream.alias("zh", SpeZh.class);
        xStream.useAttributeFor(SpeZh.class, "title");
        xStream.useAttributeFor(SpeZh.class, "isMain");
        xStream.useAttributeFor(SpeZh.class, "type");

        xStream.addImplicitCollection(Special.class, "zh");

        //fs_main 标签
        xStream.alias("fs_main", FsMain.class);
        xStream.alias("zh", Title.class);
        xStream.useAttributeFor(Title.class,"title");
        xStream.useAttributeFor(Title.class,"context");
        //xStream.addImplicitCollection(Title.class, "title");

        xStream.addImplicitCollection(FsMain.class, "zh");

        //fs_sub 标签
        xStream.alias("fs_sub", FsSub.class);
        xStream.alias("zh", ZhSub.class);
        xStream.useAttributeFor(ZhSub.class, "title");
        xStream.addImplicitCollection(FsSub.class, "zh");

        //kx_main 标签
        xStream.alias("kx_main", KxMain.class);
        xStream.alias("zh", ZhSub.class);
        xStream.useAttributeFor(Title.class, "title");
        xStream.addImplicitCollection(KxMain.class, "zh");

        //kx_sub 标签
        xStream.alias("kx_sub", KxSub.class);
        xStream.alias("zh", ZhSub.class);
        xStream.useAttributeFor(Title.class, "title");
        xStream.addImplicitCollection(KxSub.class, "zh");

        String string = xStream.toXML(config);
        String xml = " \n";
        //System.out.println(xml + string);
        return xml + string;
    }

    private static List getSysIndicatorCombines() {
        ItemSet itemSet = new ItemSet();
        itemSet.setTitle("海王体验版");
        itemSet.setSel(100);
        itemSet.setFunType(1000);
        itemSet.setType(10000);

        ItemSet itemSet001 = new ItemSet();
        itemSet001.setSel(1100);
        itemSet001.setFunType(11000);
        itemSet001.setType(110000);
        itemSet.getItem().add(itemSet001);

        /
        ItemSet itemSet1 = new ItemSet();
        itemSet1.setTitle("赢家体验版");
        itemSet1.setSel(200);
        itemSet1.setFunType(2000);
        itemSet1.setType(20000);

        ItemSet itemSet002 = new ItemSet();
        itemSet002.setSel(2200);
        itemSet002.setFunType(22000);
        itemSet002.setType(220000);
        itemSet1.getItem().add(itemSet002);

        List list = new ArrayList<>();
        list.add(itemSet);
        list.add(itemSet1);
        return list;
    }

    private static List getShortbar() {
        //一级功能
        ShortbarItem itemSet = new ShortbarItem();
        itemSet.setTitle("交易");
        itemSet.setImageSel("100");
        itemSet.setFunType(1000);
        itemSet.setType(0);

        //二级功能
/*
        ShortbarItem itemSet001 = new ShortbarItem();
        itemSet001.setImageSel("1100");
        itemSet001.setFunType(11000);
        itemSet001.setType(110000);
        itemSet.getItem().add(itemSet001);
*/

        /一级功能
        ShortbarItem itemSet1 = new ShortbarItem();
        itemSet1.setType(3);
        itemSet1.setFunType(null);
        //二级功能
        ShortbarItem itemSet002 = new ShortbarItem();
        itemSet002.setImageSel("2200");
        itemSet002.setFunType(22000);
        itemSet002.setType(220000);
        itemSet1.getItem().add(itemSet002);

        //三级功能
        ShortbarItem itemSet003 = new ShortbarItem();
        itemSet003.setImageSel("3300");
        itemSet003.setFunType(33000);
        itemSet003.setType(330000);
        itemSet002.getItem().add(itemSet003);

        List list = new ArrayList<>();
        list.add(itemSet);
        list.add(itemSet1);
        return list;
    }

    private static List getWebTag() {
        //一级功能
        UrlTag itemSet = new UrlTag();
        itemSet.setTitle("F10");
        itemSet.setWeb("www.baidu.com");
        itemSet.setOpen(11);
        itemSet.setFixed("true");

        //二级功能
        Ptag itemSet001 = new Ptag();
        itemSet001.setType("broker");

        Ptag itemSet002 = new Ptag();
        itemSet002.setType("stock");

        itemSet.getP().add(itemSet001);
        itemSet.getP().add(itemSet002);

        /一级功能
        UrlTag itemSet1 = new UrlTag();
        itemSet1.setTitle("自选资讯");
        itemSet1.setWeb("http://basic.10jqka.com.cn/");
        itemSet1.setOpen(22);
        itemSet1.setFixed("false");

        //二级功能
 /*       Ptag itemSet002 = new Ptag();
        itemSet002.setImageSel("2200");
        itemSet002.setFunType(22000);
        itemSet002.setType(220000);
        itemSet1.getItem().add(itemSet002);*/

        List list = new ArrayList<>();
        list.add(itemSet);
        list.add(itemSet1);
        return list;
    }

    private static List getSpecialZhTag() {
        List zhList = new ArrayList<>();
        zhList.add(new SpeZh("MACD","0"));
        zhList.add(new SpeZh("DMI","0"));
        zhList.add(new SpeZh("DMA","0"));
        zhList.add(new SpeZh("FSL","0"));
        zhList.add(new SpeZh("TRIX","0"));
        zhList.add(new SpeZh("BRAR","0"));
        zhList.add(new SpeZh("CR","0"));
        zhList.add(new SpeZh("VR","0"));
        zhList.add(new SpeZh("OBV","0"));
        zhList.add(new SpeZh("ASI","0"));
        zhList.add(new SpeZh("EMV","0"));
        zhList.add(new SpeZh("VOL","0"));
        zhList.add(new SpeZh("RSI","0"));
        zhList.add(new SpeZh("WR","0"));
        zhList.add(new SpeZh("KDJ","0"));
        zhList.add(new SpeZh("CCI","0"));
        zhList.add(new SpeZh("ROC","0"));
        zhList.add(new SpeZh("MTM","0"));
        zhList.add(new SpeZh("BOLL","0"));
        zhList.add(new SpeZh("PSY","0"));

        zhList.add(new SpeZh("MA", "1", "fxt"));
        zhList.add(new SpeZh("MA2", "1", "fxt"));
        zhList.add(new SpeZh("EXPMA", "1", "fxt"));
        zhList.add(new SpeZh("BBIBOLL", "1", "fxt"));
        return zhList;
    }

    private static List getfsSubZhTag() {
        List zhList = new ArrayList<>();
        zhList.add(new ZhSub("MACD"));
        zhList.add(new ZhSub("KDJ"));
        zhList.add(new ZhSub("BOLL"));
        zhList.add(new ZhSub("DMI"));
        zhList.add(new ZhSub("WR"));
        return zhList;
    }

    private static List getkxMainTag() {
        List zhList = new ArrayList<>();
        zhList.add(new ZhSub("MA"));
        zhList.add(new ZhSub("MA2"));
        zhList.add(new ZhSub("EXPMA"));
        zhList.add(new ZhSub("BBIBOLL"));
        return zhList;
    }

    private static List getKxSubZhTag() {
        List zhList = new ArrayList<>();
        zhList.add(new ZhSub("MACD"));
        zhList.add(new ZhSub("DMI"));
        zhList.add(new ZhSub("DMA"));
        zhList.add(new ZhSub("FSL"));
        zhList.add(new ZhSub("TRIX"));

        zhList.add(new ZhSub("BRAR"));
        zhList.add(new ZhSub("CR"));
        zhList.add(new ZhSub("VR"));
        zhList.add(new ZhSub("OBV"));
        zhList.add(new ZhSub("ASI"));
        zhList.add(new ZhSub("EMV"));

        zhList.add(new ZhSub("VOL"));
        zhList.add(new ZhSub("RSI"));
        zhList.add(new ZhSub("WR"));
        zhList.add(new ZhSub("KDJ"));
        zhList.add(new ZhSub("CCI"));
        zhList.add(new ZhSub("ROC"));
        zhList.add(new ZhSub("MTM"));
        zhList.add(new ZhSub("BOLL"));
        zhList.add(new ZhSub("PSY"));
        return zhList;
    }

    private static List getFsMainTag() {
        List<Title> titles = new ArrayList<>();
        Title ti = new Title();
        ti.setTitle("MA");
       // ti.setContext("name=MACD,isMain=0");
        titles.add(ti);
        return titles;
    }


    private static void getStrToMap(Long id,Map configParam,Map configParams) {
        if (null == id) {
            return;
        }
        Map<String, String> map = configParams == null || configParams.isEmpty() ? new HashMap<>() : configParams;
        SysUseModuleParam paramMap = (SysUseModuleParam) configParam.getOrDefault(id, null);
        if (null != paramMap && StringUtils.isNotBlank(paramMap.getContext())) {
            // 拼装固定参数
            // String str = "image=ShortBar,image_sel=ShortBar";
            String[] pairs = paramMap.getContext().split("&");
            for (String pair : pairs) {
                String[] keyValue = pair.split("=");
                configParams.put(keyValue[0], keyValue[1]);
            }
        }
    }

    private static Map<String,String> getStrToMapChildern(Long id,Map configParam,String areaValue) {
        if (null == id) {
            return new HashMap<>();
        }
        Map<String, String> map = new HashMap<>();
        SysUseModuleParam paramMap = (SysUseModuleParam) configParam.getOrDefault(id, null);
        if (null != paramMap && StringUtils.isNotBlank(paramMap.getContext())) {
            // 拼装固定参数
            if (StringUtils.isNotBlank(areaValue)) {
                if (null != PARAM_AREA_MAP.getOrDefault(areaValue, null)) {
                    paramMap.setContext(paramMap.getContext() + "&" + PARAM_AREA_MAP.getOrDefault(areaValue, null));
                }
            }
            // String str = "image=ShortBar,image_sel=ShortBar";
            String[] pairs = paramMap.getContext().split("&");
            for (String pair : pairs) {
                String[] keyValue = pair.split("=");
                map.put(keyValue[0], keyValue[1]);
            }
        }
        // System.out.println(map);
        return map;
    }

    public static Map<String, String> PARAM_AREA_MAP = ImmutableMap.<String, String>builder()
            .put("2","image=#B19659&image_sel=#FFC10A&image_hover=#FFDA88")
            .put("3","image=#926995&image_sel=#F7A1FF&image_hover=#F9AAFF")
            .put("4","image=#61709C&image_sel=#B5C8FF&image_hover=#94AFFF").build();

/*   手拼成XML生成方式
 private String createXML(List<ItemSet> list){
        String[] types = new String[]{"CONCEPT-概念", "FGBK-风格", "DYBK-地域", "HYBK-行业"};
            //创建document
            Document document = DocumentHelper.createDocument();
            //创建根节点
            Element root = DocumentHelper.createElement("config");
            document.setRootElement(root);
            //创建根节点下的子节点
            for (String type : types) {
                Element bigblock = root.addElement("bigblock");
                bigblock.addAttribute("code", type.split("-")[0]);
                bigblock.addAttribute("setcode", "");
                bigblock.addAttribute("name", "");
                }
            return document.getXMLEncoding();
    }*/


}
</code></pre> 
  <p>生成XML如下</p> 
  <pre><code class="language-XML"><?xml version="1.0" encoding="UTF-8" ?>
<config>
	<menu>
		<item title="决策" funType=2>
			<item title="市场热点" funType=1 shortcut="SCRD" cmd="cmd:25"/>
			<item title="行情异动" funType=1 shortcut="HQYD"  cmd="cmd:65"/>
			<item title="" type=1 separator=true />
			<item title="龙头掘金" cmd="cmd:69" right="300"/>
			<item title="" type=1 separator=true />
			<item title="资金监控" cmd="zbzh:资金监控"/>
		</item>
		
		<item title="发现" funType=2>
			<item title="未来大事" funType=1 cmd="web"/>
			<item title="事件驱动" funType=1 cmd="web"/>
			<item title="盘口异动" funType=1 cmd="web"/>
			<item title="个股避雷" funType=1 cmd="web"/>
		</item>
		<item title="交易" cmd="trade"/>
	</menu>
	<shortbar>
		<item title="首页" image="ShortBar/new_sy" image_sel="ShortBar/new_sy" type=0 funType=0 cmd="cmd:3"/>
		<item title="" image="ShortBar/jy" image_sel="ShortBar/jy" type=-1 separator=true funType=6 />
		<item type =2>
			<item title="自选股" tip="自选股" image="#B19659" image_sel="#FFC10A" image_hover="#FFF078" type=4 cmd="cmd:16,9002,-1,0">
				<item title="自选股" tip="自选股" cmd="cmd:16,9002,-1,0"/>
				<item title="最近浏览" tip="最近浏览" cmd="cmd:16,9114,-1,0"/>
			</item>
			<item title="全景图" tip="全景图" image="#B19659" image_sel="#FFC10A" image_hover="#FFF078" type=4 cmd="cmd:3">
				<item title="全景图" tip="全景图" cmd="cmd:3"/>
			</item>
		</item>
		<item type =2>
			<item title="大盘" image="#B19659" image_sel="#FFC10A" image_hover="#FFF078" type=4 cmd="cmd:67">
				<item title="中证500" cmd="cmd:2,120"/>
				<item title="上证50" cmd="cmd:2,114"/>
			</item>
			<item title="B股" image="#B19659" image_sel="#FFC10A" image_hover="#FFF078" type=4 cmd="cmd:101,7,14,1">
				<item title="沪深B股" cmd="cmd:101,7,14,1"/>
				<item title="上证B股" cmd="cmd:101,1,14,1"/>
				<item title="深证B股" cmd="cmd:101,3,14,1"/>
			</item>
		</item>
		<item type =2>
			<item title="板块" image="#B19659" image_sel="#FFC10A" image_hover="#FFF078" type=4 cmd="cmd:9,36,-1,0">
				<item title="概念板块" cmd="cmd:9,37,-1,0"/>
			</item>
			<item title="基金" image="#B19659" image_sel="#FFC10A" image_hover="#FFF078" type=4 cmd="cmd:66,9,14,1">
				<item title="沪深基金" cmd="cmd:66,9,14,1"/>
				<item title="ETF基金" cmd="cmd:66,75,14,1"/>
			</item>
			
		</item>	
		<item type =2>
			<item title="个股" image="#B19659" image_sel="#FFC10A" image_hover="#FFF078" type=4 cmd="cmd:60,6,14,1">
				<item title="科创板" cmd="cmd:60,74,14,1"/>
				<item title="沪深300" cmd="cmd:2,119"/>
			</item>
			<item title="债券" image="#B19659" image_sel="#FFC10A" image_hover="#FFF078" type=4 cmd="cmd:102,8,14,1">
				<item title="可转债" cmd="cmd:102,28,14,1"/>
			</item>
			
		</item>	
		<item type =2>
			<item title="综合排名" image="#B19659" image_sel="#FFC10A" image_hover="#FFF078" type=4 cmd="cmd:8,6">
				<item title="综合排名" cmd="cmd:8,6"/>
				<item title="财务分析" cmd="cmd:62,6,50,1"/>
			</item>
		</item>	
		
		<item type =2>
			<item title="市场热点" type=1 image="#926995" image_sel="#F7A1FF" image_hover="#F67EFF"  shortcut="SCRD" cmd="cmd:25"/>
			<item title="行情异动" type=1 image="#926995" image_sel="#F7A1FF" image_hover="#F67EFF" shortcut="HQYD"  cmd="cmd:65"/>
		</item>
	</shortbar>
	<web>
		<url title="F10" web="http://basic.10jqka.com.cn/" open=0 >
			<p type="broker"/>
		</url>
		<url title="自选资讯"  web="https://cn/pc/#/index?active=3" id="73" />
		
		<url title="未来大事" web="https://-tt" id="74" />
		<url title="个股避雷" web="https://-tesan" id="77" />
		<url title="个股资讯" web="http://.1.1/hrhg/zxList">
			<p type="stock"/>
			<p type="bzs"/>
			<p type="skin"/>
		</url>
		
		<url title="研究报告" web="http://47..148.190/hrhg/yb">
			<p type="stock"/>
		</url>
		<url title="行业资讯" web="http://hrhg/blocklist">
			<p type="stock_hyblockcode"/>
			<p type="stock_hyblockname"/>
		</url>
		
		<url title="payInfo" web="http://47:80/course/pay">
		</url>
		<url title="SetDrawLine" web="http://16379/api/drawLines/set">
			<p type="phone"/>
			<p type="plaform"/>
			<p type="key"/>
		</url>

		<url title="webTest" web="https://win32/api/winuser/nc-winuser-wndproc" />
		<url title="今日最相似" web="http:49.:8880/klineRank" />
		<url title="commonShortcuts_jsp" web="web/.html" open=2/>
		<url title="helpManual_mqt" web="web/.html" open=2/>

		<url title="Register" web="http://16379/api/user/register?" open=0 >
			<p type="username"/>
			<p type="phone"/>
			<p type="code"/>
			<p type="password"/>
			<p type="confirmPassword"/>
			<p type="inviteCode"/>
		</url>

	<special>
		<!-- </zh> -->
		<zh title="MACD" isMain="0"/>
		<zh title="DMI" isMain="0"/>
		<zh title="MTM" isMain="0"/>
		<zh title="BOLL" isMain="0"/>
		<zh title="PSY" isMain="0"/>
	</special>
	
	<fs_main>
		<zh title="MA"/>
	</fs_main>
	<fs_sub>
		<zh title="MACD"/>
		<zh title="WR"/>
	</fs_sub>
	<kx_main>
		<zh title="MA"/>
		<zh title="MA2"/>
		<zh title="BBIBOLL"/>
	</kx_main>
	<kx_sub>
		<zh title="MACD"/>
		<zh title="MTM"/>
		<zh title="BOLL"/>
		<zh title="PSY"/>
	</kx_sub>
	
	<vip_zb_rights>
		<vip name="估值脉络线"  spell="GZMLX"/>
	</vip_zb_rights>
	<images>
	</images>
	<saveScheme save=1>
	</saveScheme>
	<tabBar hide=1>
	</tabBar>
	<skinVisible hide=0>
	</skinVisible>
</config>
</code></pre> 
  <p></p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1731821228076904448"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(xml,python,java)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1829971916513964032.htm"
                           title="React教案" target="_blank">React教案</a>
                        <span class="text-muted">涔溪</span>
<a class="tag" taget="_blank" href="/search/react.js/1.htm">react.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6/1.htm">前端框架</a>
                        <div>ECMAScript61、ES6简介1.1、什么是ES6ECMAScript6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。1.2、ECMAScript和JavaScript的关系一个常见的问题是,ECMAScript和JavaScript到底是什么关系?要讲</div>
                    </li>
                    <li><a href="/article/1829969531334914048.htm"
                           title="微信小程序轮播图" target="_blank">微信小程序轮播图</a>
                        <span class="text-muted">爱斯基摩白</span>

                        <div>微信小程序swiper组件轮播图照着开发文档尝试,总是能有所收获.之前做Android开发,做个轮播图并不简单,用上viewpage再设置圆点,折腾一通之后还一堆bug.今天尝试微信小程序开发做轮播图,真是感动的泪流满面.废话说完了,上图.image上图就是一个简易的轮播图,是不是很简易.23333主要是代码也很简单.1.index.wxml这里有几个属性需要说明.image微信小程序开发的循环用</div>
                    </li>
                    <li><a href="/article/1829969268008120320.htm"
                           title="Spark Streaming+Kafka整合+offset管理" target="_blank">Spark Streaming+Kafka整合+offset管理</a>
                        <span class="text-muted">JiahuiTian</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Spark/1.htm">Spark</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Kafka/1.htm">Kafka</a><a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a><a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a>
                        <div>Kafka0-8Receiver模式和Direct模式都不适合当前版本不适用,本次学习采用Kafka0-10Direct模式,并通过第三方存储zookeeper来手动管理offset目录前言offset管理一个完整的整合代码Demo(Java版)导入相关的Maven依赖创建通过ZK管理Offset的工具类测试类Demo前言SparkStreaming获取Kafka的数据有两种方式:Receiver</div>
                    </li>
                    <li><a href="/article/1829969015292915712.htm"
                           title="去中心化Java,Springboot+web3j完成去中心化的区块链应用" target="_blank">去中心化Java,Springboot+web3j完成去中心化的区块链应用</a>
                        <span class="text-muted">不二周山</span>
<a class="tag" taget="_blank" href="/search/%E5%8E%BB%E4%B8%AD%E5%BF%83%E5%8C%96Java/1.htm">去中心化Java</a>
                        <div>Springboot+web3j完成去中心化的区块链应用简单分析下本人的小小开发经历,当初自己学习的时候翻看很多资料也一头雾水,白花了很多力气,这里进行简要总结,希望为大家带来帮助。前期准备如下:IDEA,你的后台编辑器;Geth,你的以太坊区块链本地客户端;不需要数据库,因为数据可以存储在区块链之上,当然你可以加上。在线编辑器remix,用来使用solidity语言编写智能合约。http://r</div>
                    </li>
                    <li><a href="/article/1829968763135553536.htm"
                           title="每日一问:Java、C、C++、Python语言的区别详解" target="_blank">每日一问:Java、C、C++、Python语言的区别详解</a>
                        <span class="text-muted">upgrador</span>
<a class="tag" taget="_blank" href="/search/%E6%AF%8F%E6%97%A5%E4%B8%80%E9%97%AE%EF%BC%9AC%2B%2B%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86%E5%85%A8%E8%A7%A3/1.htm">每日一问:C++基础知识全解</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a>
                        <div>每日一问:Java、C、C++、Python语言的区别详解Java、C、C++、Python是当今编程世界中最常用的编程语言,它们各自有着独特的语法、功能和应用领域。本文将深入分析这四种编程语言的区别,通过具体实例帮助读者理解它们的优缺点及适用场景。文章目录一、语言的基本特性比较1.1**编译与解释:从C到Python的演变**1.2**内存管理:从手动到自动**二、面向对象的支持2.1**C与C</div>
                    </li>
                    <li><a href="/article/1829963720072196096.htm"
                           title="Python开发者必备利器之Gooey使用详解" target="_blank">Python开发者必备利器之Gooey使用详解</a>
                        <span class="text-muted">Rocky006</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>概要在Python开发中,命令行程序是一种常见的方式来与用户交互,但有时候用户更喜欢使用图形界面来操作程序。为了实现这一转变,我们可以使用非标准模块Gooey,它可以帮助我们将命令行程序快速转换为具有图形用户界面(GUI)的应用程序。本文将介绍Gooey的基本概念、使用方法以及多种案例,帮助读者了解如何利用Gooey轻松实现命令行程序到GUI程序的转变。什么是Gooey?Gooey是一个Pytho</div>
                    </li>
                    <li><a href="/article/1829963720634232832.htm"
                           title="从Python转向MicroPython使用详解" target="_blank">从Python转向MicroPython使用详解</a>
                        <span class="text-muted">Rocky006</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>概要随着物联网(IoT)设备的普及和嵌入式系统的广泛应用,MicroPython逐渐成为Python开发者们探索嵌入式编程的重要工具。MicroPython是一种精简版的Python,专为资源受限的设备而设计,能够在微控制器和其他嵌入式设备上运行。对于习惯使用Python的开发者而言,转向MicroPython可能会有一些挑战和变化。本文将详细介绍如何从Python顺利转向MicroPython,</div>
                    </li>
                    <li><a href="/article/1829959563181387776.htm"
                           title="快速上手 Electron 及推荐库" target="_blank">快速上手 Electron 及推荐库</a>
                        <span class="text-muted">Liumoui</span>
<a class="tag" taget="_blank" href="/search/electron/1.htm">electron</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>###快速上手Electron及推荐库####什么是Electron?Electron是一个基于Node.js和Chromium的框架,用于构建跨平台的桌面应用程序。它将网页技术(HTML、CSS和JavaScript)带入桌面应用开发,允许开发者使用熟悉的前端技术构建功能强大的桌面应用。####Electron的基本概念1.**主进程和渲染进程**-**主进程**:运行在Node.js环境中,负</div>
                    </li>
                    <li><a href="/article/1829957419409698816.htm"
                           title="springboot定时任务@Scheduled以及集群定时任务锁@SchedulerLock" target="_blank">springboot定时任务@Scheduled以及集群定时任务锁@SchedulerLock</a>
                        <span class="text-muted">随时看</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a>
                        <div>springboot定时任务@Scheduled以及集群定时任务锁@SchedulerLock代码地址:https://github.com/763977251/MyDemo/tree/main/scheduled_demo1.引入maven依赖引入mysql:因为分布式锁是基于mysql数据库表实现的mysqlmysql-connector-javaruntimecom.alibabadruid</div>
                    </li>
                    <li><a href="/article/1829957041305776128.htm"
                           title="实现分布式锁SchedulerLock" target="_blank">实现分布式锁SchedulerLock</a>
                        <span class="text-muted">雨会停rain</span>
<a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a>
                        <div>Spring提供了一种简单的方法来实现用于调度作业的API。在我们部署应用程序的多个实例之前,它运行良好。默认情况下,Spring无法处理多个实例上的调度程序同步。它在每个节点上同时执行作业。1.添加Maven依赖项net.javacrumbs.shedlockshedlock-spring2.2.02.配置数据库目前,ShedLock支持Mongo,Redis,Hazelcast,ZooKeep</div>
                    </li>
                    <li><a href="/article/1829955275809976320.htm"
                           title="学习react day02" target="_blank">学习react day02</a>
                        <span class="text-muted">花开富贵城</span>
<a class="tag" taget="_blank" href="/search/react.js/1.htm">react.js</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>(1)jsx即javascript+xml其实就是JavaScript对象JSX——使用react构造组件,bable进行编译==>JavaScript对象——ReactDom.render()==>DOM元素==>插入页面(2)创建组件importReactfrom'react'importReactDOMfrom'react-dom/client';//把react组件渲染到页面//impor</div>
                    </li>
                    <li><a href="/article/1829955149464956928.htm"
                           title="vsCode保存代码自动格式化" target="_blank">vsCode保存代码自动格式化</a>
                        <span class="text-muted">花开富贵城</span>
<a class="tag" taget="_blank" href="/search/vscode/1.htm">vscode</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E8%BE%91%E5%99%A8/1.htm">编辑器</a>
                        <div>{"editor.formatOnSave":true,"[vue]":{"editor.defaultFormatter":"octref.vetur"},"files.autoSave":"off","eslint.validate":["javascript","javascriptreact","vue-html",{"language":"vue","autoFix":true}],"e</div>
                    </li>
                    <li><a href="/article/1829954770585088000.htm"
                           title="arcgis api for js文字加载不出来的问题解决" target="_blank">arcgis api for js文字加载不出来的问题解决</a>
                        <span class="text-muted">这个问题在哪见过</span>
<a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/arcGIS/1.htm">arcGIS</a><a class="tag" taget="_blank" href="/search/gis/1.htm">gis</a>
                        <div>问题表现:文本symbol展示不出来问题分析:从arcgis默认的fonturl地址加载font文件失败解决方案:将pbf文件下载到本地步骤一:pbf文件下载使用python3.X下载pbf文件importsys,osfromurllib.requestimporturlopenimportjsonimporttracebackimporttime#baseUrl='https://static.</div>
                    </li>
                    <li><a href="/article/1829954387527692288.htm"
                           title="现在程序员这么多,我学习java这块应该学到什么程度才能不被淘汰呢?" target="_blank">现在程序员这么多,我学习java这块应该学到什么程度才能不被淘汰呢?</a>
                        <span class="text-muted">渡你眉间山河</span>

                        <div>一、夯实基础JavaSE这是基础,一定要好好学习!Java语法,面向对象(包括类、对象、方法、继承、封装、抽象、多态、消息解析等),常见API,数据结构,集合框架,设计模式(包括创建型、结构型、行为型),多线程和并发,I/O流,Stream,网络编程。JavaEEJavaEE是在JavaSE的基础上构建的,JavaEE容器,Web容器,常用框架(包括Struts2、Hibernate、Mybati</div>
                    </li>
                    <li><a href="/article/1829952125728288768.htm"
                           title="Swagger GET请求传递id参数,URL后缀变成了{?id}" target="_blank">Swagger GET请求传递id参数,URL后缀变成了{?id}</a>
                        <span class="text-muted">排骨瘦肉丁</span>
<a class="tag" taget="_blank" href="/search/SpringBoot/1.htm">SpringBoot</a><a class="tag" taget="_blank" href="/search/Swagger/1.htm">Swagger</a>
                        <div>背景新建的springboot项目,通过swagger调试接口的时候,发现GET请求,我只传递了id一个参数,然后在swagger中,该接口的url的后缀竟然变成了{?id},当我请求接口的时候就直接报错了:java.lang.IllegalArgumentException:Invalidcharacterfoundintherequesttarget[/official/admin/api/n</div>
                    </li>
                    <li><a href="/article/1829951999517487104.htm"
                           title="全面解读 Spring 和 Spring MVC 常用注解" target="_blank">全面解读 Spring 和 Spring MVC 常用注解</a>
                        <span class="text-muted">胡耀超</span>
<a class="tag" taget="_blank" href="/search/Spring/1.htm">Spring</a><a class="tag" taget="_blank" href="/search/java%E9%9D%A2%E8%AF%95%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98/1.htm">java面试常见问题</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/mvc/1.htm">mvc</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>Spring是一个功能强大的Java框架,用于构建企业级应用程序。SpringMVC是Spring框架的一部分,专注于构建基于Web的应用程序。为了有效地使用这些框架,了解常用注解及其应用场景至关重要。1.总体总结Spring框架和SpringMVC提供了大量注解,用于简化配置、依赖注入、面向切面编程(AOP)等任务。下表概述了一些常见的注解,按类别进行划分,包括核心Spring注解和Spring</div>
                    </li>
                    <li><a href="/article/1829949856983117824.htm"
                           title="HTML静态网页成品作业(HTML+CSS)——抗击疫情网页(4个页面)" target="_blank">HTML静态网页成品作业(HTML+CSS)——抗击疫情网页(4个页面)</a>
                        <span class="text-muted">爱码网页成品</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%A6%E7%94%9F%E7%BD%91%E9%A1%B5/1.htm">学生网页</a><a class="tag" taget="_blank" href="/search/%E9%9D%99%E6%80%81%E7%BD%91%E9%A1%B5/1.htm">静态网页</a><a class="tag" taget="_blank" href="/search/html%2Bcss/1.htm">html+css</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>不定期分享源码,关注不丢失哦文章目录一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码五、源码获取一、作品介绍️本套采用HTML+CSS,未使用Javacsript代码,共有4个页面。二、作品演示三、代码目录四、网站代码HTML部分代码Document抗击新冠,人人有责共同抗疫全民防疫抗疫的经验和意义众志成城前言有人说:“英雄就是普通人拥有一颗伟大的心。”__年__月__日,小林的生</div>
                    </li>
                    <li><a href="/article/1829949604729286656.htm"
                           title="HTML静态网页成品作业(HTML+CSS)——非遗昆曲介绍设计制作(1个页面)" target="_blank">HTML静态网页成品作业(HTML+CSS)——非遗昆曲介绍设计制作(1个页面)</a>
                        <span class="text-muted">爱码网页成品</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%A6%E7%94%9F%E7%BD%91%E9%A1%B5/1.htm">学生网页</a><a class="tag" taget="_blank" href="/search/html%2Bcss/1.htm">html+css</a><a class="tag" taget="_blank" href="/search/%E9%9D%99%E6%80%81%E7%BD%91%E9%A1%B5/1.htm">静态网页</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>不定期分享源码,关注不丢失哦文章目录一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码五、源码获取一、作品介绍️本套采用HTML+CSS,未使用Javacsript代码,共有1个页面。二、作品演示三、代码目录四、网站代码HTML部分代码非遗昆曲昆曲简介昆曲(KunOpera),原名“昆山腔”(简称“昆腔”),是中国古老的戏曲声腔、剧种,现又被称为“昆剧”。昆曲是汉族传统戏曲中最古老的</div>
                    </li>
                    <li><a href="/article/1829948975013261312.htm"
                           title="SautinSoft HTML to RTF .Net Crack" target="_blank">SautinSoft HTML to RTF .Net Crack</a>
                        <span class="text-muted">SEO-狼术</span>
<a class="tag" taget="_blank" href="/search/Delphi/1.htm">Delphi</a><a class="tag" taget="_blank" href="/search/net/1.htm">net</a><a class="tag" taget="_blank" href="/search/Crack/1.htm">Crack</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>SautinSoftHTMLtoRTF.NetCrackKeyFeaturesofSautinSoftHTMLtoRTF.Net:HTMLtoDOCXConversion:ConvertHTMLcontentintoDOCXfileswithfullsupportforCSSandsimpleJavaScript,creatingwell-formattedWorddocuments.HTMLto</div>
                    </li>
                    <li><a href="/article/1829947839724220416.htm"
                           title="Debezium日常分享系列之:Debezium 3.0.0.Alpha1 Released" target="_blank">Debezium日常分享系列之:Debezium 3.0.0.Alpha1 Released</a>
                        <span class="text-muted">快乐骑行^_^</span>
<a class="tag" taget="_blank" href="/search/%E6%97%A5%E5%B8%B8%E5%88%86%E4%BA%AB%E4%B8%93%E6%A0%8F/1.htm">日常分享专栏</a><a class="tag" taget="_blank" href="/search/Debezium%E6%97%A5%E5%B8%B8%E5%88%86%E4%BA%AB%E7%B3%BB%E5%88%97/1.htm">Debezium日常分享系列</a><a class="tag" taget="_blank" href="/search/Debezium/1.htm">Debezium</a><a class="tag" taget="_blank" href="/search/3.0.0.Alpha1/1.htm">3.0.0.Alpha1</a>
                        <div>Debezium日常分享系列之:Debezium3.0.0.Alpha1Released一、重大改变Java和Maven要求已更改二、新的特征和提高MongoDB三、更多内容Debezium3的第一个预发布版本3.0.0.Alpha1。这个版本虽然比正常的预版本要小,但高度关注几个关键点,例如使用Java17/21测试发布过程;然而,它还包括一些新功能。一、重大改变Java和Maven要求已更改此</div>
                    </li>
                    <li><a href="/article/1829947713400172544.htm"
                           title="Baumer工业相机堡盟工业相机如何通过NEOAPISDK实现根据每次触发信号移动感兴趣区域ROI(Python)" target="_blank">Baumer工业相机堡盟工业相机如何通过NEOAPISDK实现根据每次触发信号移动感兴趣区域ROI(Python)</a>
                        <span class="text-muted">格林威</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%B8%9A%E7%9B%B8%E6%9C%BA/1.htm">工业相机</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E7%A0%81%E7%9B%B8%E6%9C%BA/1.htm">数码相机</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>Baumer工业相机堡盟工业相机如何通过NEOAPISDK实现根据每次触发信号移动感兴趣区域ROI(Python)Baumer工业相机Baumer工业相机定序器功能的技术背景Baumer工业相机通过NEOAPISDK使用定序器功能预期的相机动作测试的图像效果Baumer工业相机通过NEOAPISDK使用定序器功能移动ROI具体实现方法1.引用合适的类文件2.通过NEOAPISDK开启三组定序器功能</div>
                    </li>
                    <li><a href="/article/1829947712234156032.htm"
                           title="Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机本身的数据保存(CustomData)功能(python)" target="_blank">Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机本身的数据保存(CustomData)功能(python)</a>
                        <span class="text-muted">格林威</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%B8%9A%E7%9B%B8%E6%9C%BA/1.htm">工业相机</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E7%A0%81%E7%9B%B8%E6%9C%BA/1.htm">数码相机</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a><a class="tag" taget="_blank" href="/search/%E8%A7%86%E8%A7%89%E6%A3%80%E6%B5%8B/1.htm">视觉检测</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>Baumer工业相机堡盟工业相机如何通过BGAPISDK设置相机本身的数据保存(CustomData)功能(python)Baumer工业相机Baumer工业相机的数据保存(CustomData)功能的技术背景CameraExplorer如何使用数据保存(CustomData)功能在NEOAPISDK里通过函数使用数据保存(CustomData)功能功能Baumer工业相机通过NEOAPISDK使</div>
                    </li>
                    <li><a href="/article/1829947585889136640.htm"
                           title="Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机资源的正确释放(Python)" target="_blank">Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机资源的正确释放(Python)</a>
                        <span class="text-muted">格林威</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%B8%9A%E7%9B%B8%E6%9C%BA/1.htm">工业相机</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E7%A0%81%E7%9B%B8%E6%9C%BA/1.htm">数码相机</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a>
                        <div>Baumer工业相机堡盟工业相机如何通过NEOAPISDK实现相机资源的正确释放(Python)Baumer工业相机Baumer工业相机NEOAPISDK和相机资源释放的技术背景Baumer工业相机通过NEOAPISDK实现相机资源释放功能1.引用合适的类文件2.通过NEOAPISDK实现相机的运行采图和资源释放Baumer工业相机通过SDK实现相机资源释放的优势Baumer工业相机通过SDK实现</div>
                    </li>
                    <li><a href="/article/1829944811025690624.htm"
                           title="基于Java Web的旅游网站设计与实现" target="_blank">基于Java Web的旅游网站设计与实现</a>
                        <span class="text-muted">IT实战课堂—x小凡同学</span>
<a class="tag" taget="_blank" href="/search/Java%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1%E9%A1%B9%E7%9B%AE/1.htm">Java毕业设计项目</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%97%85%E6%B8%B8/1.htm">旅游</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>摘要:随着互联网的快速发展和普及,旅游行业与信息技术的结合日益紧密。本文旨在探讨基于JavaWeb的旅游网站的设计与实现过程,通过该网站为游客提供便捷的旅游信息查询、旅游线路预订、景点评价等服务。本文首先分析了旅游网站的需求,然后详细阐述了网站的架构设计、功能模块开发以及数据库设计等关键内容,最后对网站进行了测试与评估。一、引言旅游行业作为现代服务业的重要组成部分,具有广阔的市场前景和巨大的发展潜</div>
                    </li>
                    <li><a href="/article/1829944430354853888.htm"
                           title="[附源码]JAVA毕业设计基于web旅游网站的设计与实现(系统+LW)" target="_blank">[附源码]JAVA毕业设计基于web旅游网站的设计与实现(系统+LW)</a>
                        <span class="text-muted">晶涛计算机毕设</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E6%97%85%E6%B8%B8/1.htm">旅游</a>
                        <div>[附源码]JAVA毕业设计基于web旅游网站的设计与实现(系统+LW)目运行环境项配置:Jdk1.8+Tomcat8.5+Mysql+HBuilderX(Webstorm也行)+Eclispe(IntelliJIDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:JAVA+mybatis+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是ja</div>
                    </li>
                    <li><a href="/article/1829943799556698112.htm"
                           title="深入理解Spring Boot中的AOP应用:从基础组件到高级功能的实现" target="_blank">深入理解Spring Boot中的AOP应用:从基础组件到高级功能的实现</a>
                        <span class="text-muted">heromps</span>
<a class="tag" taget="_blank" href="/search/Springboot/1.htm">Springboot</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>深入理解SpringBoot中的AOP应用:从基础组件到高级功能的实现在现代Java开发中,SpringBoot因其简洁性和强大的功能而被广泛采用。而AOP(面向切面编程)作为Spring框架的核心特性之一,为开发者提供了在不修改业务代码的情况下增强功能的能力。本文将深入探讨SpringBoot中那些使用AOP实现的基础组件和高级功能,展示AOP在事务管理、日志记录、安全性、缓存、异步执行等方面的</div>
                    </li>
                    <li><a href="/article/1829943295246168064.htm"
                           title="[附源码]java毕业设计基于web旅游网站的设计与实现" target="_blank">[附源码]java毕业设计基于web旅游网站的设计与实现</a>
                        <span class="text-muted">李会计算机程序设计</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E6%97%85%E6%B8%B8/1.htm">旅游</a>
                        <div>项目运行环境配置:Jdk1.8+Tomcat7.0+Mysql+HBuilderX(Webstorm也行)+Eclispe(IntelliJIDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:SSM+mybatis+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.ID</div>
                    </li>
                    <li><a href="/article/1829942914898292736.htm"
                           title="JavaScript 显示对象" target="_blank">JavaScript 显示对象</a>
                        <span class="text-muted">软件技术NINI</span>
<a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/udp/1.htm">udp</a>
                        <div>如何显示JavaScript对象?显示JavaScript对象将输出[objectObject]。实例constperson={name:"Bill",age:19,city:"Seattle"};document.getElementById("demo").innerHTML=person;//[objectObject]显示JavaScript对象的一些常见解决方案是:按名称显示对象属性循环</div>
                    </li>
                    <li><a href="/article/1829942410982027264.htm"
                           title="Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用UserSet功能保存和载入相机的各类参数(Python)" target="_blank">Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用UserSet功能保存和载入相机的各类参数(Python)</a>
                        <span class="text-muted">格林威</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%B8%9A%E7%9B%B8%E6%9C%BA/1.htm">工业相机</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E7%A0%81%E7%9B%B8%E6%9C%BA/1.htm">数码相机</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>Baumer工业相机堡盟工业相机如何通过NEOAPISDK使用UserSet功能保存和载入相机的各类参数(Python)Baumer工业相机Baumer工业相机NEOAPISDK中UserSet的技术背景代码案例分享第一步:保存相机当前参数设置UserSet_Save第二步:载入已经保存的相机参数UserSet_Load工业相机SDK中的UserSet功能的优点工业相机SDK中的UserSet功能</div>
                    </li>
                    <li><a href="/article/1829938475852460032.htm"
                           title="【Python 1-11】Python手把手教程之——字典的用法和对字典的管理" target="_blank">【Python 1-11】Python手把手教程之——字典的用法和对字典的管理</a>
                        <span class="text-muted">弗拉德x</span>

                        <div>作者|弗拉德来源|弗拉德(公众号:fulade_me)字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值key=>value对用冒号:分割,每个键值对之间用逗号,分割,整个字典包括在花括号{}中。使用字典在Python中,字典是一系列键—值对。每个键都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python对象用</div>
                    </li>
                                <li><a href="/article/118.htm"
                                       title="异常的核心类Throwable" target="_blank">异常的核心类Throwable</a>
                                    <span class="text-muted">无量</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%BA%90%E7%A0%81/1.htm">源码</a><a class="tag" taget="_blank" href="/search/%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86/1.htm">异常处理</a><a class="tag" taget="_blank" href="/search/exception/1.htm">exception</a>
                                    <div>java异常的核心是Throwable,其他的如Error和Exception都是继承的这个类 里面有个核心参数是detailMessage,记录异常信息,getMessage核心方法,获取这个参数的值,我们可以自己定义自己的异常类,去继承这个Exception就可以了,方法基本上,用父类的构造方法就OK,所以这么看异常是不是很easy 
 
 
 
package com.natsu;


</div>
                                </li>
                                <li><a href="/article/245.htm"
                                       title="mongoDB 游标(cursor) 实现分页 迭代" target="_blank">mongoDB 游标(cursor) 实现分页 迭代</a>
                                    <span class="text-muted">开窍的石头</span>
<a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a>
                                    <div>上篇中我们讲了mongoDB 中的查询函数,现在我们讲mongo中如何做分页查询 
 
     如何声明一个游标 
       var mycursor = db.user.find({_id:{$lte:5}}); 
      迭代显示游标数</div>
                                </li>
                                <li><a href="/article/372.htm"
                                       title="MySQL数据库INNODB 表损坏修复处理过程" target="_blank">MySQL数据库INNODB 表损坏修复处理过程</a>
                                    <span class="text-muted">0624chenhong</span>
<a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>最近mysql数据库经常死掉,用命令net stop mysql命令也无法停掉,关闭Tomcat的时候,出现Waiting for N instance(s) to be deallocated 信息。查了下,大概就是程序没有对数据库连接释放,导致Connection泄露了。因为用的是开元集成的平台,内部程序也不可能一下子给改掉的,就验证一下咯。启动Tomcat,用户登录系统,用netstat -</div>
                                </li>
                                <li><a href="/article/499.htm"
                                       title="剖析如何与设计人员沟通" target="_blank">剖析如何与设计人员沟通</a>
                                    <span class="text-muted">不懂事的小屁孩</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a>
                                    <div>最近做图烦死了,不停的改图,改图……。烦,倒不是因为改,而是反反复复的改,人都会死。很多需求人员不知该如何与设计人员沟通,不明白如何使设计人员知道他所要的效果,结果只能是沟通变成了扯淡,改图变成了应付。 
 
那应该如何与设计人员沟通呢? 
 
我认为设计人员与需求人员先天就存在语言障碍。对一个合格的设计人员来说,整天玩的都是点、线、面、配色,哪种构图看起来协调;哪种配色看起来合理心里跟明镜似的,</div>
                                </li>
                                <li><a href="/article/626.htm"
                                       title="qq空间刷评论工具" target="_blank">qq空间刷评论工具</a>
                                    <span class="text-muted">换个号韩国红果果</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a>
                                    <div>

var a=document.getElementsByClassName('textinput');
					var b=[];
					for(var m=0;m<a.length;m++){
						if(a[m].getAttribute('placeholder')!=null)
							b.push(a[m])
					}
					var l</div>
                                </li>
                                <li><a href="/article/753.htm"
                                       title="S2SH整合之session" target="_blank">S2SH整合之session</a>
                                    <span class="text-muted">灵静志远</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/AOP/1.htm">AOP</a><a class="tag" taget="_blank" href="/search/struts/1.htm">struts</a><a class="tag" taget="_blank" href="/search/session/1.htm">session</a>
                                    <div>错误信息: 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cartService': Scope 'session' is not active for the current thread; consider defining a scoped</div>
                                </li>
                                <li><a href="/article/880.htm"
                                       title="xmp标签" target="_blank">xmp标签</a>
                                    <span class="text-muted">a-john</span>
<a class="tag" taget="_blank" href="/search/%E6%A0%87%E7%AD%BE/1.htm">标签</a>
                                    <div>今天在处理数据的显示上遇到一个问题: 
var html = '<li><div class="pl-nr"><span class="user-name">' + user
           + '</span>' + text + '</div></li>';
ulComme</div>
                                </li>
                                <li><a href="/article/1007.htm"
                                       title="Ajax的常用技巧(2)---实现Web页面中的级联菜单" target="_blank">Ajax的常用技巧(2)---实现Web页面中的级联菜单</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a>
                                    <div>在网络上显示数据,往往只显示数据中的一部分信息,如文章标题,产品名称等。如果浏览器要查看所有信息,只需点击相关链接即可。在web技术中,可以采用级联菜单完成上述操作。根据用户的选择,动态展开,并显示出对应选项子菜单的内容。 在传统的web实现方式中,一般是在页面初始化时动态获取到服务端数据库中对应的所有子菜单中的信息,放置到页面中对应的位置,然后再结合CSS层叠样式表动态控制对应子菜单的显示或者隐</div>
                                </li>
                                <li><a href="/article/1134.htm"
                                       title="天-安-门,好高" target="_blank">天-安-门,好高</a>
                                    <span class="text-muted">atongyeye</span>
<a class="tag" taget="_blank" href="/search/%E6%83%85%E6%84%9F/1.htm">情感</a>
                                    <div>    我是85后,北漂一族,之前房租1100,因为租房合同到期,再续,房租就要涨150。最近网上新闻,地铁也要涨价。算了一下,涨价之后,每次坐地铁由原来2块变成6块。仅坐地铁费用,一个月就要涨200。内心苦痛。 
 
    晚上躺在床上一个人想了很久,很久。 
   
    我生在农</div>
                                </li>
                                <li><a href="/article/1261.htm"
                                       title="android 动画" target="_blank">android 动画</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E9%80%8F%E6%98%8E%E5%BA%A6/1.htm">透明度</a><a class="tag" taget="_blank" href="/search/%E5%B9%B3%E7%A7%BB/1.htm">平移</a><a class="tag" taget="_blank" href="/search/%E7%BC%A9%E6%94%BE/1.htm">缩放</a><a class="tag" taget="_blank" href="/search/%E6%97%8B%E8%BD%AC/1.htm">旋转</a>
                                    <div>android的动画有两种  tween动画和Frame动画 
  
tween动画;,透明度,缩放,旋转,平移效果 
  
Animation   动画 
AlphaAnimation 渐变透明度 
RotateAnimation 画面旋转 
ScaleAnimation 渐变尺寸缩放 
TranslateAnimation 位置移动 
Animation</div>
                                </li>
                                <li><a href="/article/1388.htm"
                                       title="查看本机网络信息的cmd脚本" target="_blank">查看本机网络信息的cmd脚本</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/cmd/1.htm">cmd</a>
                                    <div>@echo 您的用户名是:%USERDOMAIN%\%username%>"%userprofile%\网络参数.txt"
@echo 您的机器名是:%COMPUTERNAME%>>"%userprofile%\网络参数.txt"
@echo ___________________>>"%userprofile%\</div>
                                </li>
                                <li><a href="/article/1515.htm"
                                       title="plsql 清除登录过的用户" target="_blank">plsql 清除登录过的用户</a>
                                    <span class="text-muted">征客丶</span>
<a class="tag" taget="_blank" href="/search/plsql/1.htm">plsql</a>
                                    <div>tools---preferences----logon history---history  把你想要删除的删除 
 
 
-------------------------------------------------------------------- 
若有其他凝问或文中有错误,请及时向我指出, 
我好及时改正,同时也让我们一起进步。 
email : binary_spac</div>
                                </li>
                                <li><a href="/article/1642.htm"
                                       title="【Pig一】Pig入门" target="_blank">【Pig一】Pig入门</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/pig/1.htm">pig</a>
                                    <div>Pig安装 
1.下载pig 
  
wget http://mirror.bit.edu.cn/apache/pig/pig-0.14.0/pig-0.14.0.tar.gz 
  
2. 解压配置环境变量 
  
   如果Pig使用Map/Reduce模式,那么需要在环境变量中,配置HADOOP_HOME环境变量 
  
expor</div>
                                </li>
                                <li><a href="/article/1769.htm"
                                       title="Java 线程同步几种方式" target="_blank">Java 线程同步几种方式</a>
                                    <span class="text-muted">BlueSkator</span>
<a class="tag" taget="_blank" href="/search/volatile/1.htm">volatile</a><a class="tag" taget="_blank" href="/search/synchronized/1.htm">synchronized</a><a class="tag" taget="_blank" href="/search/ThredLocal/1.htm">ThredLocal</a><a class="tag" taget="_blank" href="/search/ReenTranLock/1.htm">ReenTranLock</a><a class="tag" taget="_blank" href="/search/Concurrent/1.htm">Concurrent</a>
                                    <div>为何要使用同步?       java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查),        将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用,        从而保证了该变量的唯一性和准确性。    1.同步方法&</div>
                                </li>
                                <li><a href="/article/1896.htm"
                                       title="StringUtils判断字符串是否为空的方法(转帖)" target="_blank">StringUtils判断字符串是否为空的方法(转帖)</a>
                                    <span class="text-muted">BreakingBad</span>
<a class="tag" taget="_blank" href="/search/null/1.htm">null</a><a class="tag" taget="_blank" href="/search/StringUtils/1.htm">StringUtils</a><a class="tag" taget="_blank" href="/search/%E2%80%9C%E2%80%9D/1.htm">“”</a>
                                    <div>转帖地址:http://www.cnblogs.com/shangxiaofei/p/4313111.html 
  
public static boolean isEmpty(String str)      
  判断某字符串是否为空,为空的标准是 str== 
null  
或 str.length()== 
0    </div>
                                </li>
                                <li><a href="/article/2023.htm"
                                       title="编程之美-分层遍历二叉树" target="_blank">编程之美-分层遍历二叉树</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B9%8B%E7%BE%8E/1.htm">编程之美</a>
                                    <div>

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class LevelTraverseBinaryTree {

    /**
     * 编程之美 分层遍历二叉树
     * 之前已经用队列实现过二叉树的层次遍历,但这次要求输出换行,因此要</div>
                                </li>
                                <li><a href="/article/2150.htm"
                                       title="jquery取值和ajax提交复习记录" target="_blank">jquery取值和ajax提交复习记录</a>
                                    <span class="text-muted">chengxuyuancsdn</span>
<a class="tag" taget="_blank" href="/search/jquery%E5%8F%96%E5%80%BC/1.htm">jquery取值</a><a class="tag" taget="_blank" href="/search/ajax%E6%8F%90%E4%BA%A4/1.htm">ajax提交</a>
                                    <div>
// 取值
	// alert($("input[name='username']").val());
	// alert($("input[name='password']").val());
	// alert($("input[name='sex']:checked").val());
	// alert($("</div>
                                </li>
                                <li><a href="/article/2277.htm"
                                       title="推荐国产工作流引擎嵌入式公式语法解析器-IK Expression" target="_blank">推荐国产工作流引擎嵌入式公式语法解析器-IK Expression</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BA%94%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">应用服务器</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/Excel/1.htm">Excel</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F/1.htm">嵌入式</a>
                                    <div>这个开源软件包是国内的一位高手自行研制开发的,正如他所说的一样,我觉得它可以使一个工作流引擎上一个台阶。。。。。。欢迎大家使用,并提出意见和建议。。。 
----------转帖--------------------------------------------------- 
 IK Expression是一个开源的(OpenSource),可扩展的(Extensible),基于java语言</div>
                                </li>
                                <li><a href="/article/2404.htm"
                                       title="关于系统中使用多个PropertyPlaceholderConfigurer的配置及PropertyOverrideConfigurer" target="_blank">关于系统中使用多个PropertyPlaceholderConfigurer的配置及PropertyOverrideConfigurer</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                                    <div>1、PropertyPlaceholderConfigurer 
Spring中PropertyPlaceholderConfigurer这个类,它是用来解析Java Properties属性文件值,并提供在spring配置期间替换使用属性值。接下来让我们逐渐的深入其配置。 
 
基本的使用方法是:(1) 
 
<bean id="propertyConfigurerForWZ&q</div>
                                </li>
                                <li><a href="/article/2531.htm"
                                       title="二叉树:二叉搜索树" target="_blank">二叉树:二叉搜索树</a>
                                    <span class="text-muted">dieslrae</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%8C%E5%8F%89%E6%A0%91/1.htm">二叉树</a>
                                    <div>    所谓二叉树,就是一个节点最多只能有两个子节点,而二叉搜索树就是一个经典并简单的二叉树.规则是一个节点的左子节点一定比自己小,右子节点一定大于等于自己(当然也可以反过来).在树基本平衡的时候插入,搜索和删除速度都很快,时间复杂度为O(logN).但是,如果插入的是有序的数据,那效率就会变成O(N),在这个时候,树其实变成了一个链表. 
 
tree代码: 
 
</div>
                                </li>
                                <li><a href="/article/2658.htm"
                                       title="C语言字符串函数大全" target="_blank">C语言字符串函数大全</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/function/1.htm">function</a>
                                    <div>C语言字符串函数大全 
  
  
函数名: stpcpy 
功 能: 拷贝一个字符串到另一个 
用 法: char *stpcpy(char *destin, char *source); 
程序例: 
  
#include <stdio.h> 
#include <string.h> 
  
int main</div>
                                </li>
                                <li><a href="/article/2785.htm"
                                       title="友盟统计页面技巧" target="_blank">友盟统计页面技巧</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/%E6%8A%80%E5%B7%A7/1.htm">技巧</a>
                                    <div>在基类调用就可以了, 基类ViewController示例代码 
-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [MobClick beginLogPageView:[NSString stringWithFormat:@"%@",self.class]];
</div>
                                </li>
                                <li><a href="/article/2912.htm"
                                       title="window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法" target="_blank">window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法</a>
                                    <span class="text-muted">flyvszhb</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a>
                                    <div>window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法 
 
本机已经安装了jdk1.7,而比较早期的项目需要依赖jdk1.6,于是同时在本机安装了jdk1.6和jdk1.7. 
 安装jdk1.6前,执行java -version得到 
C:\Users\liuxiang2>java -version 
java version "1.7.0_21&quo</div>
                                </li>
                                <li><a href="/article/3039.htm"
                                       title="Java在创建子类对象的同时会不会创建父类对象" target="_blank">Java在创建子类对象的同时会不会创建父类对象</a>
                                    <span class="text-muted">happyqing</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%88%9B%E5%BB%BA/1.htm">创建</a><a class="tag" taget="_blank" href="/search/%E5%AD%90%E7%B1%BB%E5%AF%B9%E8%B1%A1/1.htm">子类对象</a><a class="tag" taget="_blank" href="/search/%E7%88%B6%E7%B1%BB%E5%AF%B9%E8%B1%A1/1.htm">父类对象</a>
                                    <div>  
1.在thingking in java 的第四版第六章中明确的说了,子类对象中封装了父类对象, 
  
2."When you create an object of the derived class, it contains within it a subobject of the base class. This subobject is the sam</div>
                                </li>
                                <li><a href="/article/3166.htm"
                                       title="跟我学spring3 目录贴及电子书下载" target="_blank">跟我学spring3 目录贴及电子书下载</a>
                                    <span class="text-muted">jinnianshilongnian</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                                    <div>  
  一、《跟我学spring3》电子书下载地址: 
《跟我学spring3》  (1-7 和 8-13) http://jinnianshilongnian.iteye.com/blog/pdf   
  
跟我学spring3系列 word原版 下载 
  
  二、
源代码下载  
最新依</div>
                                </li>
                                <li><a href="/article/3420.htm"
                                       title="第12章 Ajax(上)" target="_blank">第12章 Ajax(上)</a>
                                    <span class="text-muted">onestopweb</span>
<a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a>
                                    <div>index.html 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/</div>
                                </li>
                                <li><a href="/article/3547.htm"
                                       title="BI and EIM 4.0 at a glance" target="_blank">BI and EIM 4.0 at a glance</a>
                                    <span class="text-muted">blueoxygen</span>
<a class="tag" taget="_blank" href="/search/BO/1.htm">BO</a>
                                    <div>http://www.sap.com/corporate-en/press.epx?PressID=14787 
  
有机会研究下EIM家族的两个新产品~~~~ 
  
New features of the 4.0 releases of BI and EIM solutions include:  
 
  Real-time in-memory computing – </div>
                                </li>
                                <li><a href="/article/3674.htm"
                                       title="Java线程中yield与join方法的区别" target="_blank">Java线程中yield与join方法的区别</a>
                                    <span class="text-muted">tomcat_oracle</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>长期以来,多线程问题颇为受到面试官的青睐。虽然我个人认为我们当中很少有人能真正获得机会开发复杂的多线程应用(在过去的七年中,我得到了一个机会),但是理解多线程对增加你的信心很有用。之前,我讨论了一个wait()和sleep()方法区别的问题,这一次,我将会讨论join()和yield()方法的区别。坦白的说,实际上我并没有用过其中任何一个方法,所以,如果你感觉有不恰当的地方,请提出讨论。 
&nb</div>
                                </li>
                                <li><a href="/article/3801.htm"
                                       title="android Manifest.xml选项" target="_blank">android Manifest.xml选项</a>
                                    <span class="text-muted">阿尔萨斯</span>
<a class="tag" taget="_blank" href="/search/Manifest/1.htm">Manifest</a>
                                    <div>结构 
继承关系 
public final class Manifest extends Objectjava.lang.Objectandroid.Manifest 
内部类 
 
 
 class Manifest.permission权限 
 class Manifest.permission_group权限组 
 构造函数 
 
public Manifest () 详细  androi</div>
                                </li>
                                <li><a href="/article/3928.htm"
                                       title="Oracle实现类split函数的方" target="_blank">Oracle实现类split函数的方</a>
                                    <span class="text-muted">zhaoshijie</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a>
                                    <div>关键字:Oracle实现类split函数的方 
项目里需要保存结构数据,批量传到后他进行保存,为了减小数据量,子集拼装的格式,使用存储过程进行保存。保存的过程中需要对数据解析。但是oracle没有Java中split类似的函数。从网上找了一个,也补全了一下。 
 
CREATE OR REPLACE TYPE t_split_100 IS TABLE OF VARCHAR2(100); 
 
cr</div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>