使用Dom4j對XML文件的各種操作

openkk 12年前發布 | 51K 次閱讀 Dom4j XML操作類庫

由于同學的畢設的問題,讓我給她寫個對XML文件的操作的代碼;還好,這里自己很熟悉;這么晚了,就把自己對Dom4j對XML文件的操作的一些心得寫上來和大家分享。至于如何導入Dom4j的jar包,就不講了。直接進入重點:

由于Dom4j采用面向接口方式編程,因此程序在處理XML解析時更加靈活,而且由于Dom4j實質上是以其他XML解析器為基礎的,采用面向接口編程的方式將允許Dom4j的底層在不同的解析機制之間自由轉換;

首先建立一個XML文件:


由于同學的畢設的問題,讓我給她寫個對XML文件的操作的代碼;還好,這里自己很熟悉;這么晚了,就把自己對Dom4j對XML文件的操作的一些心得寫上來和大家分享。至于如何導入Dom4j的jar包,就不講了。直接進入重點:

    /* 
         * 建立xml文件,并寫入根節點 
         */  
        void createXML() {  
            // 如果文件存在則不建立xml文件  
            File file = new File(documentName);  
            if (file.exists()) {  
                return;  
            }  
            DocumentFactory factory = new DocumentFactory();  
            Document document = factory.createDocument();  

            // 建立根節點  
            document.addElement(rootName);  

            // 建立一個xml文件,將Dom4j樹寫入xml文件  
            try {  
                FileWriter fw = new FileWriter(documentName);  
                XMLWriter writer = new XMLWriter(fw);  
                writer.write(document);  
                fw.close();  
            } catch (IOException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
        }  
根據提供的文件名和根節點建立一個XML文件;建立以個DOM樹,然后將這個DOM樹寫入到文件中;

以下是實現XML文件的增、刪、改、查功能,代碼如下:

    /* 
         * 新添打折賓館信息 
         */  
        public void addHotel(String id, String price, String name, String address,   
                String beginTime, String endTime) {  
            SAXReader reader = new SAXReader();  
            reader.setStripWhitespaceText(true);  
            try {  
                Document document = reader.read(new File(documentName));  

                // 獲取根節點  
                Element root = document.getRootElement();  

                // 添加一個新的hotel節點  
                Element hotel = root.addElement("hotel");  

                // 添加和設置新hotel節點信息  
                hotel.addAttribute("id", id);  
                Element priceElement = hotel.addElement("price");  
                Element nameElement = hotel.addElement("name");  
                Element addressElement = hotel.addElement("address");  
                Element beginTimeElement = hotel.addElement("beginTime");  
                Element endTimeElement = hotel.addElement("endTime");  
                priceElement.setText(price);  
                nameElement.setText(name);  
                addressElement.setText(address);  
                beginTimeElement.setText(beginTime);  
                endTimeElement.setText(endTime);  
                FileWriter fw = new FileWriter(documentName);  
                XMLWriter writer = new XMLWriter(fw);  
                writer.write(document);  
                fw.close();  
            } catch (IOException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            } catch (DocumentException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }   
        }  

        /* 
         * 根據賓館呢id,查找賓館打折信息 
         */  
        String[] queryHotel(String id) {  
            SAXReader reader = new SAXReader();  
            String[] queryResult = new String[6];  
            int index = 0;  

            try {  
                Document document = reader.read(new File(documentName));  

                // 獲取根節點  
                Element root = document.getRootElement();  

                // 獲取根節點包含的所有子節點  
                List nodes = root.elements();  
                Element e;  
                List sunNodes;  
                Element sunE;  
                for (Object element : nodes) {  
                    e = (Element)element;  

                    // 如果id值與設定的id值相等,則遍歷該節點,獲取信息  
                    if ((e.attribute("id")).getText().equals(id)) {  
                        // 獲取當前子節點的所有子節點  
                        sunNodes = e.elements();  
                        queryResult[index++] = id;  
                        for (Object sunElement : sunNodes) {  
                            sunE = (Element)sunElement;  
                            queryResult[index++] = sunE.getTextTrim();  
                        }  
                        break;  
                    }  
                }  
            } catch (DocumentException e) {  
                e.printStackTrace();  
            }  
            return queryResult;  
        }  

        /* 
         * 根據賓館id,查找相應賓館,并修改賓館信息 
         */  
        void modifyHotel(String id, String price, String name, String address,   
                String beginTime, String endTime) {  
            SAXReader reader = new SAXReader();  

            try {  
                Document document = reader.read(new File(documentName));  

                // 獲取根節點  
                Element root = document.getRootElement();  

                // 獲取根節點包含的所有子節點  
                List nodes = root.elements();  
                Element e;  
                List sunNodes;  
                for (Object element : nodes) {  
                    e = (Element)element;  
                    int index = 0;  

                    // 如果id值與設定的id值相等,則遍歷該節點,獲取信息  
                    if ((e.attribute("id")).getText().equals(id)) {  
                        // 獲取當前子節點的所有子節點  
                        sunNodes = e.elements();  
                        for (Object sunElement : sunNodes) {  
                            if (index == 0) {  
                                ((Element)sunElement).setText(price);  
                            }  
                            if (index == 1) {  
                                ((Element)sunElement).setText(name);  
                            }  
                            if (index == 2) {  
                                ((Element)sunElement).setText(address);  
                            }  
                            if (index == 3) {  
                                ((Element)sunElement).setText(beginTime);  
                            }  
                            if (index == 4) {  
                                ((Element)sunElement).setText(endTime);  
                            }  
                            index++;  
                        }  
                        break;  
                    }  
                }  
                FileWriter fw = new FileWriter(documentName);  
                XMLWriter writer = new XMLWriter(fw);  
                writer.write(document);  
                fw.close();  
            } catch (DocumentException e) {  
                e.printStackTrace();  
            } catch (IOException e1) {  
                // TODO Auto-generated catch block  
                e1.printStackTrace();  
            }  
        }  

        /* 
         * 根據id,刪除指定hotel信息 
         */  
        void deleteHotel(String id) {  
            SAXReader reader = new SAXReader();  

            try {  
                Document document = reader.read(new File(documentName));  

                // 獲取根節點  
                Element root = document.getRootElement();  

                // 獲取根節點包含的所有子節點  
                List nodes = root.elements();  
                Element e;  
                for (Object element : nodes) {  
                    e = (Element)element;  

                    // 如果id值與設定的id值相等,則遍歷該節點,獲取信息  
                    if ((e.attribute("id")).getText().equals(id)) {  
                        // 刪除該節點  
                        root.remove(e);  
                        break;  
                    }  
                }  
                FileWriter fw = new FileWriter(documentName);  
                XMLWriter writer = new XMLWriter(fw);  
                writer.write(document);  
                fw.close();  
            } catch (DocumentException e) {  
                e.printStackTrace();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
講解,到此完畢,主要是代碼,很簡單。如果有什么問題,請大家提出來!!!

轉自:http://blog.csdn.net/vipygd/article/details/7584077

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!