项目笔记:导入功能

  前台JS:注意:url后的  ?disc=baseLineTemplate  是必须要加的,因为要走先处理一下

复制代码
var serialNumberUrl = "";
    $(function() {
        $("#buttonSubmit").bind("click", function() {
            var serialNumberFileVal = $("#serialNumberFile").val();
            serialNumberFileVal = serialNumberFileVal.substring(serialNumberFileVal.lastIndexOf('.') + 1);
            if (serialNumberFileVal != "xml") {
                showAlertDialog("提示", "请选择xml文件上传");
                return false;
            } else {
                serialNumberUrl = "${basePath}/genuineSerialNumberManagementAction_importSerialNumber.do?disc=baseLineTemplate";
                document.serialNumber_importSerialNumber.action = serialNumberUrl;
                serialNumber_importSerialNumber.submit();
            }
        });
         /** 验证文件是否导入成功  */  
        $("#serialNumber_importSerialNumber").ajaxForm(function(data){
            setMessage(data);
        });
    });
复制代码

  后台解析数据:

复制代码
//导入模板
public void importSerialNumber(){
    this.msg = RESULT_ERROR;
    try{
        // 记录文件上传的MAP对象
        User currentUser = SessionUtil.getInstance().getUserFromSession(this.getRequest());
        final String name = currentUser.getAccount().trim();// 加入实际项目后,获取文件上传的系统用户名称,即登录用记名称,唯一性
        for (Entry<String, String[]> entry : FileUploadConstant.fileOperator_baseTemplate.entrySet()) {
            File file = new File(entry.getValue()[1]);
            this.msg = genuineSerialNumberManagementService.importTemplate(file);
            FileUploadConstant.fileOperator_baseTemplate.remove(entry.getKey());
        }
        FileUploadConstant.fileOperator_baseTemplate.clear();
        genuineSerialNumberManagementService.createXML();
    }catch(Exception e){
        log.error("导入规则库失败!", e);
        this.msg = RESULT_ERROR;
    }
    print(this.msg);
}
复制代码
复制代码
public String importTemplate(File file) {
    String message = "error";
    try {
        //获取文件
        Document doc = XMLUtil.getDocument(file.getPath());
        // 获取根节点
        Element root = doc.getRootElement();
        //根据根节点判断type值
        Integer type = null;
        if("SoftLicW".equals(root.getQName().getName())){
            type = 1;
        }else if("SoftLicB".equals(root.getQName().getName())){
            type = 0;
        }
        // 获取Software节点
        Iterator<?> ruleNode = root.elementIterator("Software");
        // 循环Software节点,判断是否存在
        while (ruleNode.hasNext()) {
            Element ruleElement = (Element) ruleNode.next();
            Attribute ruleXmlId = ruleElement.attribute("SoftId");
            Attribute ruleXmlName = ruleElement.attribute("DisplayName");
            // 获取license节点
            Iterator<?> license = ruleElement.elementIterator("license");
            // 循环license节点,判断是否存在
            while (license.hasNext()) {
                Element licenseElement = (Element) license.next();
                Attribute licenseVersion = licenseElement.attribute("Version");
                Attribute licenseValue = licenseElement.attribute("value");
                GenuineSerialNumberManagement serialNumber = new GenuineSerialNumberManagement();
                serialNumber.setType(type);
                serialNumber.setSoftId(Integer.valueOf(ruleXmlId.getText()));
                serialNumber.setSoftDisplayName(ruleXmlName.getText());
                serialNumber.setVersion(licenseVersion.getText());
                serialNumber.setSerialNumber(licenseValue.getText());
                genuineSerialNumberManagementDao.save(serialNumber);//保存解析出来的数据到数据库
            }
        }
        message = "success";
    } catch (Exception e) {
        e.printStackTrace();
        message = "error";
    }
    return message;
}
复制代码

 

posted @   古兰精  阅读(222)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示