XML的add,update.delete,select

来源:互联网 发布:iphone ssh 默认端口 编辑:程序博客网 时间:2024/05/16 11:52
 public String getFilterUrls()
    {
       
        Document doc = getElement();
       
        // 读取文件
        //  得到根节点
        Element root = doc.getRootElement();
       
        // 取得filterUrls节点
        Element filterUrls = root.element("filterUrls");
       
        //得到filterUrls多个url节点的list
        List<Element> filList = filterUrls.elements("url");
       
        StringBuffer sb = new StringBuffer();
       
        // 遍历filterUrlsList
        for (Element e : filList)
        {
           
            //添加到filterUrlsList
            sb.append(e.getText().trim() + ",");
        }
       
        filrUrls = sb.toString();
       
        return SUCCESS;
    }
   
    /**
     * < 获取仅列号全部问题单链接>
     * <功能详细描述>
     * @return success
     * @see [类、类#方法、类#成员]
     */
    public String getRecordUrls()
    {
        Document doc = this.getElement();
       
        //  得到根节点
        Element root = doc.getRootElement();
       
        // 取得recordUrls节点
        Element recordUrls = root.element("recordUrls");
       
        //得到recordUrls多个url节点的list
        List<Element> recList = recordUrls.elements("url");
       
        StringBuffer sb = new StringBuffer();
       
        // 遍历recordUrlsList
        for (Element e : recList)
        {
           
            sb.append(e.getText().trim() + ",");
        }
        recUrls = sb.toString();
        return SUCCESS;
    }
   
    /**
     * <更新非撤销问题单下载链接>
     * <功能详细描述>
     * @return success
     * @see [类、类#方法、类#成员]
     */
    public String updateDts()
    {
       
        // 获取文件的节点的ID
        String dtsId = StringTools.getStringFromMap(getParameter(), "dtsId");
       
        // 获取问题单修改的内容
        String dtsCon = StringTools.getStringFromMap(getParameter(), "dtsCon");
       
        // 获取修改的问题链接的类型
        String dtsType =
            StringTools.getStringFromMap(getParameter(), "dtsType");
       
        // 得到 Document对象
        Document doc = this.getElement();
       
        // 读取文件
        //  得到根节点
        Element root = doc.getRootElement();
       
        // 取得filterUrls节点
        Element filterUrls = root.element("filterUrls");
       
        // 取得recordUrls节点
        Element recordUrls = root.element("recordUrls");
       
        //得到recordUrls多个url节点的list
        List<Element> recList = recordUrls.elements("url");
       
        //得到filterUrls多个url节点的list
        List<Element> filList = filterUrls.elements("url");
       
        // 创建一个list<String>, 来保存读取的数据和修改的数据
        List<String> urlList = new ArrayList<String>();
       
        //未修改的问题单链接
        List<String> otherUrlList = new ArrayList<String>();
       
        //判断修改问题单类型
        if ("filterUrls".equals(dtsType))
        {
           
            // 遍历recordUrlsList
            for (int i = 0; i < filList.size(); i++)
            {
               
                //判断修改的节点ID 是否等于xml的节点
                if (Integer.parseInt(dtsId) == i)
                {
                    urlList.add(dtsCon);
                }
                else
                {
                    urlList.add(filList.get(i).getText());
                }
            }
           
            //未修改的问题单
            for (int i = 0; i < recList.size(); i++)
            {
                otherUrlList.add(recList.get(i).getText());
            }
           
            // 调用修改XML节点方法
            if (this.creXml(urlList, otherUrlList, "filterUrls"))
            {
               
                //修改成功返回码
                isTrue = "true";
               
                return SUCCESS;
            }
           
        }
        else if ("recordUrls".equals(dtsType))
        {
            // 遍历recordUrlsList
            for (int i = 0; i < recList.size(); i++)
            {
               
                //判断修改的节点ID 是否等于xml的节点
                if (Integer.parseInt(dtsId) == i)
                {
                    urlList.add(dtsCon);
                }
                else
                {
                    urlList.add(recList.get(i).getText());
                }
            }
           
            //未修改的问题单
            for (int i = 0; i < filList.size(); i++)
            {
                otherUrlList.add(filList.get(i).getText());
            }
           
            // 调用修改XML节点方法
            if (this.creXml(urlList, otherUrlList, "recordUrls"))
            {
               
                //修改成功返回码
                isTrue = "true";
               
                return SUCCESS;
               
            }
        }
       
        return ERROR;
    }
   
    /**
     * <根据ID删除问题单链接>
     * <功能详细描述>
     * @return success
     * @see [类、类#方法、类#成员]
     */
    public String deleteDts()
    {
       
        OutputFormat format = null;
       
        XMLWriter writer = null;
       
        // 获取文件的节点的ID
        String dtsId = StringTools.getStringFromMap(getParameter(), "dtsId");
       
        // 获取删除的问题链接的类型
        String dtsType =
            StringTools.getStringFromMap(getParameter(), "dtsType");
       
        // 得到 Document对象
        Document doc = this.getElement();
       
        // 读取文件
        //  得到根节点
        Element root = doc.getRootElement();
       
        // 取得filterUrls节点
        Element filterUrls = root.element("filterUrls");
       
        // 取得recordUrls节点
        Element recordUrls = root.element("recordUrls");
       
        //得到recordUrls多个url节点的list
        List<Element> recList = recordUrls.elements("url");
       
        //得到filterUrls多个url节点的list
        List<Element> filList = filterUrls.elements("url");
       
        // 判断要删除的类型
        if ("filterUrls".equals(dtsType))
        {
           
            //删除某一个URL节点
            for (int i = 0; i < filList.size(); i++)
            {
                Element el = filList.get(i);
                if (i == Integer.parseInt(dtsId))
                {
                    filList.remove(el);
                }
            }
           
        }
        else if ("recordUrls".equals(dtsType))
        {
           
            //删除某一个URL节点
            for (int i = 0; i < recList.size(); i++)
            {
                Element el = recList.get(i);
                if (i == Integer.parseInt(dtsId))
                {
                    recList.remove(el);
                }
               
            }
        }
        format = OutputFormat.createPrettyPrint();
       
        //设置编码
        format.setEncoding("UTF-8");
        try
        {
            writer = new XMLWriter(new FileWriter(new File(strUrl)), format);
            writer.write(doc);
            writer.close();
        }
        catch (IOException e)
        {
            LOG.error(StringVar.INPOUTIO, e);
        }
       
        //成功返回码
        isTrue  = "true";
       
        return SUCCESS;
    }
   
    /**
     * <增加问题单>
     * <功能详细描述>
     * @return success
     * @see [类、类#方法、类#成员]
     */
    public String addDts()
    {
       
        // 获取增加的问题链接
        String dtsCon = StringTools.getStringFromMap(getParameter(), "dtsCon");
       
        // 获取增加的问题链接的类型
        String dtsType =
            StringTools.getStringFromMap(getParameter(), "dtsType");
       
        // 得到 Document对象
        Document doc = this.getElement();
       
        // 读取文件
        //  得到根节点
        Element root = doc.getRootElement();
       
        // 取得filterUrls节点
        Element filterUrls = root.element("filterUrls");
       
        // 取得recordUrls节点
        Element recordUrls = root.element("recordUrls");
       
        //得到filterUrls多个url节点的list
        List<Element> filList = filterUrls.elements("url");
       
        //得到recordUrls多个url节点的list
        List<Element> recList = recordUrls.elements("url");
       
        int urlSize = managerService.queryVersionList();
       
        if (filList.size() >= urlSize && "filterUrls".equals(dtsType))
        {
           
            //向页面传值(能增加的问题单的数量)
            vSize = urlSize;
        }
        else if (recList.size() >= urlSize && "recordUrls".equals(dtsType))
        {
           
            //向页面传值(能增加的问题单的数量)
            vSize = urlSize;
           
        }
       
        // 创建一个list<String>, 来保存读取的数据和修改的数据
        List<String> urlList = new ArrayList<String>();
       
        //未修改的问题单链接
        List<String> otherUrlList = new ArrayList<String>();
       
        //判断增加的问题单URL
        if ("filterUrls".equals(dtsType)
            && filList.size() < urlSize)
        {
           
            for (Element el : filList)
            {
                urlList.add(el.getText());
            }
            urlList.add(dtsCon);
           
            //未修改的问题单
            for (int i = 0; i < recList.size(); i++)
            {
                otherUrlList.add(recList.get(i).getText());
            }
           
            // 创建新的问题单链接
            this.creXml(urlList, otherUrlList, "addFilterUrls");
           
        }
        else if ("recordUrls".equals(dtsType)
            && recList.size() < urlSize)
        {
           
            for (Element el : recList)
            {
                urlList.add(el.getText());
            }
            urlList.add(dtsCon);
           
            //未修改的问题单
            for (int i = 0; i < filList.size(); i++)
            {
                otherUrlList.add(filList.get(i).getText());
            }
           
            // 创建新的问题单链接
            this.creXml(urlList, otherUrlList, "addRecordUrls");
           
        }
       
        return SUCCESS;
    }
   
    /**
     * <获取Element的对象值>
     * <功能详细描述>
     * @return document
     * @see [类、类#方法、类#成员]
     */
    private Document getElement()
    {
       
        // 获取文件路径
        File fi = new File(strUrl);
       
        // 创建dom4j的 SAXReader对象
        SAXReader saxReader = new SAXReader();
       
        Document doc = null;
        try
        {
            doc = saxReader.read(fi);
        }
        catch (DocumentException e)
        {
            LOG.error(StringVar.LISTERROR, e);
        }
        return doc;
    }
   
    /**
     * <修改XML的url节点>
     * <功能详细描述>
     * @param urlList 修改的url节点内容
     * @param otherUrlList 没有修改的哪个问题单链接
     * @param urlName 修改节点的名称
     * @return success
     * @see [类、类#方法、类#成员]
     */
    public boolean creXml(List<String> urlList, List<String> otherUrlList,
        String urlName)
    {
        boolean flag = false;
       
        // document对象
        Document document = null;
       
        //根节点
        Element autoDownConifg = null;
       
        //dbServer节点
        Element dbServer = null;
       
        //dbUser节点
        Element dbUser = null;
       
        //dbPwd节点
        Element dbPwd = null;
       
        //dbName节点
        Element dbName = null;
       
        //domainHost节点
        Element domainHost = null;
       
        //filterDir节点
        Element filterDir = null;
       
        //recordDir节点
        Element recordDir = null;
       
        //filterUrls节点
        Element filterUrls = null;
       
        //recordUrls节点
        Element recordUrls = null;
       
        //url节点
        //Element url = null;
       
        OutputFormat format = null;
        XMLWriter writer = null;
       
        try
        {
            document = DocumentHelper.createDocument();
           
            // 给各个节点放值
            autoDownConifg = document.addElement("autoDownConifg");
            dbServer = autoDownConifg.addElement("dbServer");
            dbServer.setText("localhost");
           
            dbUser = autoDownConifg.addElement("dbUser");
            dbUser.setText("root");
           
            dbPwd = autoDownConifg.addElement("dbPwd");
            dbPwd.setText("LTE_2011");
           
            dbName = autoDownConifg.addElement("dbName");
            dbName.setText("cilog");
           
            domainHost = autoDownConifg.addElement("domainHost");
            domainHost.setText("china.huawei.com");
           
            // 创建CDATA节点
            filterDir = autoDownConifg.addElement("filterDir");
            filterDir.addCDATA(strFilterDir);
           
            // 创建CDATA节点
            recordDir = autoDownConifg.addElement("recordDir");
            recordDir.addCDATA(strRecordDir);
           
            filterUrls = autoDownConifg.addElement("filterUrls");
           
            recordUrls = autoDownConifg.addElement("recordUrls");
           
            // 判断修改的XML是什么节点
            if ("filterUrls".equals(urlName))
            {
                upFilterUrls(urlList, otherUrlList, filterUrls, recordUrls);
            }
            else if ("recordUrls".equals(urlName))
            {
                upFilterUrls(urlList, otherUrlList, recordUrls, filterUrls);
            }
           
            // 判断增加的XML是什么节点
            if ("addFilterUrls".equals(urlName))
            {
               
                upFilterUrls(urlList, otherUrlList, filterUrls, recordUrls);
            }
            else if ("addRecordUrls".equals(urlName))
            {
                upFilterUrls(urlList, otherUrlList, recordUrls, filterUrls);
            }
           
            format = OutputFormat.createPrettyPrint();
           
            //设置编码
            format.setEncoding("UTF-8");
           
            writer = new XMLWriter(new FileWriter(new File(strUrl)), format);
           
            writer.write(document);
            writer.close();
           
            flag = true;
           
            return flag;
        }
        catch (Exception e)
        {
            LOG.error(StringVar.CREATEXML, e);
        }
       
        return flag;
       
    }
   
    /**
     * <修改或者新增XML的FilterUrls节点URL>
     * <功能详细描述>
     * @param urlList
     * @param otherUrlList
     * @param filterUrls
     * @param recordUrls
     * @see [类、类#方法、类#成员]
     */
    private void upFilterUrls(List<String> urlList, List<String> otherUrlList,
        Element filterUrls, Element recordUrls)
    {
       
        Element url;
       
        //循环插入到节点中 (CDATA)
        for (int i = 0; i < urlList.size(); i++)
        {
            url = filterUrls.addElement("url");
            url.addCDATA(urlList.get(i));
        }
       
        //循环插入recordUrls节点的URL (CDATA)
        for (int i = 0; i < otherUrlList.size(); i++)
        {
            url = recordUrls.addElement("url");
            url.addCDATA(otherUrlList.get(i));
        }
    }
原创粉丝点击