XML的add,update.delete,select

 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));
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章