zoukankan      html  css  js  c++  java
  • 项目笔记:创建XML文件和导出功能

    一、创建XML文件:

     要生成的XML结构:

    //创建文件夹
    private void createFilePah(String path){
        File file = new File(path);
        if(!file.exists()){
            file.mkdirs();
        }
    }
    
    @Override
    public void createXML() {
        try{
            Integer softLicBType = 0;
            Integer softLicWType = 1;//类型,判断来创建正版还是非正版
            //根据Type来获取非正版数据List
            List<GenuineSerialNumberManagement> softLicB =  genuineSerialNumberManagementDao.queryByType(softLicBType);
            String pathB = ReadConfigFileUtil.getValue(SystemStatics.ROOTDIR) + SystemStatics.PATH_PAW + File.separator+"genuineSerialNumberManagement";
            createFilePah(pathB);//判断文件夹路径是否存,不存在就创建文件夹
            String XMLPathB =pathB +File.separator + "SoftLicB.xml";//组合非正版文件路径
            List<GenuineSerialNumberManagement> softLicW =  genuineSerialNumberManagementDao.queryByType(softLicWType);
            String pathW = ReadConfigFileUtil.getValue(SystemStatics.ROOTDIR) + SystemStatics.PATH_PAW + File.separator+"genuineSerialNumberManagement";
            createFilePah(pathW);
            String XMLPathW = pathW+File.separator + "SoftLicW.xml";
            
            Document documentB = DocumentHelper.createDocument();//创建文件
            Element rootB = documentB.addElement("SoftLicB");//创建文件根目录
            List<Integer> ss = new ArrayList<Integer>();//声明一个空List用于保存softId,当softId已经写过一次时,就不再写而是写它下级的东西
            for (GenuineSerialNumberManagement type : softLicB){
                if(!ss.contains(type.getSoftId())){//如果不存在就增加进去
                    ss.add(type.getSoftId());
                    Element softWare = rootB.addElement("Software");//二级目录,二级目录里面有SoftId和DisplayName
                    softWare.addAttribute("SoftId", type.getSoftId().toString());
                    softWare.addAttribute("DisplayName", type.getSoftDisplayName());
                    //根据type和softId来获取数据list,因为同一个softId下面的东西需要在三级目录上
                    List<GenuineSerialNumberManagement> softIdB =  genuineSerialNumberManagementDao.queryBySoftIdAndType(type.getSoftId(),softLicBType);
                    for(GenuineSerialNumberManagement soft : softIdB){
                        Element license = softWare.addElement("license");//三级目录,三级目录里面有Version和value
                        license.addAttribute("Version", soft.getVersion());
                        license.addAttribute("value", soft.getSerialNumber());
                    }
                }else{
                    continue;
                }
            }
            XMLUtil.writeXml(documentB, XMLPathB);//在路径下写入文件
            
            Document documentW = DocumentHelper.createDocument();
            Element rootW = documentW.addElement("SoftLicW");
            List<Integer> ww = new ArrayList<Integer>();
            for(GenuineSerialNumberManagement type : softLicW){
                if(!ww.contains(type.getSoftId())){
                    ww.add(type.getSoftId());
                    Element softWare = rootW.addElement("Software");
                    softWare.addAttribute("SoftId", type.getSoftId().toString());
                    softWare.addAttribute("DisplayName", type.getSoftDisplayName());
                    List<GenuineSerialNumberManagement> softIdW = genuineSerialNumberManagementDao.queryBySoftIdAndType(type.getSoftId(), softLicWType);
                    for(GenuineSerialNumberManagement soft : softIdW){
                        Element license = softWare.addElement("license");
                        license.addAttribute("Version", soft.getVersion());
                        license.addAttribute("value", soft.getSerialNumber());
                    }
                }else{
                    continue;
                }
            }
            XMLUtil.writeXml(documentW, XMLPathW);
        }catch(Exception e){
            e.printStackTrace();
        } catch (Throwable e) {
            e.printStackTrace();
        }
    }

    我们看下与数据库交互的queryBySoftIdAndType

      @SuppressWarnings("unchecked")
        @Override
        public List<GenuineSerialNumberManagement> queryBySoftIdAndType(Integer softId,Integer type) {
            return this.getSession().createQuery(" FROM " + this.clazz.getName() + " this WHERE this.softId =(:softId) AND this.type =(:type)")
                    .setParameter("softId", softId)
                    .setParameter("type", type)
                    .list();
        }

    然后调用该方法即可生成XML

    //自动生成xml
    genuineSerialNumberManagementService.createXML();

    二、导出功能:

    <form id="export_serialNumber" action="" style="padding: 0; margin: 0;" method="post" target="_blank">
        <input type="hidden" id="exportType" name="genuineSerialNumberManagement.type" value="" />
    </form>
      //导出规则库
        function exportSerialNumber(){
            var currentType = $("input[name='serialNumber']:checked").val();
            if (currentType == "") {
                showMsg("系统提示", "请选择要导出的类型!", false);
                return;
            }
            if ($.checkSession()) {
                var $form = $("#export_serialNumber");
                var action = "";
                try {
                    $("#exportType").val(currentType);
                    action = $form.attr("action");
                    $form.attr("action", "${basePath}/genuineSerialNumberManagementAction_export.do").submit();
                } finally {
                    $form.attr("action", action);
                }
            }
        }

    注意form表单里需要加个input隐藏域用于传type值

      //导出规则库
        public String export() {
            log.info("【正版序列号管理--导出规则库:开始】");
            try {
                if (genuineSerialNumberManagement != null) {
                    String filePath = ReadConfigFileUtil.getValue(SystemStatics.ROOTDIR) + SystemStatics.PATH_PAW + File.separator+"genuineSerialNumberManagement\";
                    // 为下载 做 准备
                    String fileName = null;
                    if(genuineSerialNumberManagement.getType()!=null && genuineSerialNumberManagement.getType() == 0){
                        fileName = "SoftLicB.xml";
                    }
                    if(genuineSerialNumberManagement.getType()!=null && genuineSerialNumberManagement.getType() == 1){
                        fileName = "SoftLicW.xml";
                    }
                    ActionContext.getContext().put("fileName", fileName);
                    ActionContext.getContext().put("filePath", filePath + fileName);
                }
                log.info("【正版序列号管理--导出规则库:结束】");
                return RETURN_DOWNLOADUI;
            } catch (Exception e) {
                log.error("【正版序列号管理--导出规则库:失败】", e);
                return null;
            }
        }
  • 相关阅读:
    rabbitmq消息路由
    rabbitmq消息消费
    python中的正则匹配
    Spectral Grouping Using Nystrom Method
    基于WKPCA的多路谱聚类算法
    基于加权KPCA的谱聚类算法
    单词拆分
    完全平方数
    零钱兑换
    组合总数
  • 原文地址:https://www.cnblogs.com/goloving/p/7491796.html
Copyright © 2011-2022 走看看