Java使用dom4j實現對xml簡單的增刪改查操作示例
本文例項講述了Java使用dom4j實現對xml簡單的增刪改查操作。分享給大家供大家參考,具體如下:
xml留了個結課作業: 後臺用xml檔案作為儲存做個迷你係統實現增刪改查的功能,在此記錄一下
先得引入dom4j的jar包放在專案的WEB-INF-->lib目錄下
先新建一個讀取器,讀取你想操作的xml檔案(我這裡寫的絕對路徑)
//讀取XML檔案,獲得document物件 SAXReader reader = new SAXReader(); Document document = null; try { document = reader.read(new File("E:\\eclipse\\XmlTest\\src\\xml\\user.xml")); } catch (DocumentException e) { e.printStackTrace(); }
上邊的try catch不加的話eclipse會報錯,因為涉及到檔案操作,document不初始為null化也會報錯
//獲得根節點的屬性物件 Element rootElem = document.getRootElement();
基本語句:
//以下操作以root為例,所有節點都可以並非只有根節點,下面的孩子指第一代孩子 //返回root節點的標籤名為"user"的孩子節點,如果有多個只返回第一個 Element contactElem = rootElem.element("user"); //獲取節點標籤之間的內容 String text=contactElem .getText(); //返回所有的孩子節點,即一個List<Element> List<Element> eles = rootElem.elements(); //返回該節點的屬性,返回的是一個物件 Attribute rootAttr = rootElem.attribute("id"); //更改屬性值 rootAttr.setValue("更改後的id值"); //給元素新增屬性和屬性值 rootElem.addAttribute("name","新增成功!"); //刪除節點的某屬性 rootElem.remove(rootAttr); //節點和節點的屬性都可以獲取名字(標籤名/屬性名) String idName = rootAttr.getName(); String tagName = rootElem.getName(); //獲取屬性的屬性值 String value=rootAttr.getValue();
所有涉及到修改增加的操作,修改完dom物件後都要寫回檔案:
OutputFormat format=OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); org.dom4j.io.XMLWriter writer=new org.dom4j.io.XMLWriter(new FileOutputStream(new File(這裡填你的xml路徑)),format); writer.write(document); writer.close();
以下都省略檔案的讀取和document / rootElem的獲取(上面提到過)
查
我這裡有個使用者表如下,做後端的賬號密碼儲存
//user,password是前臺傳來的賬號密碼 boolean RightPassword=false; List<Element> eles = rootElem.elements(); for (Element ele : eles) { if(ele.element("account").getText().equals(user)) { if(ele.element("password").getText().equals(password)) RightPassword=true; return; } }
增
這裡拿另一個xml舉例,該xml儲存文章
示例增加一個文章,大家可以做的更復雜一些
Element newArticle=rootElem.addElement("article"); newArticle.setText("文章內容"); //以下的輸出檔案和上面提到的一樣 OutputFormat format=OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); org.dom4j.io.XMLWriter writer=new org.dom4j.io.XMLWriter(new FileOutputStream(new File("你的xml路徑")),format); writer.write(document); writer.close();
刪
下面示例按標籤內容刪除一個節點
(應該按某個屬性值如id刪除,因為上例追求簡單沒設屬性)
List<Element> eles = rootElem.elements(); for (Element ele : eles) { if(ele.getText().equals("按照內容刪除")) { rootElem.remove(ele); } } //以下的輸出檔案和上面提到的一樣 OutputFormat format=OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); org.dom4j.io.XMLWriter writer=new org.dom4j.io.XMLWriter(new FileOutputStream(new File("你的xml路徑")),format); writer.write(document); writer.close();
改
和上面的刪除只有一句不同,找到節點後想修改什麼就 set什麼就可以了
List<Element> eles = rootElem.elements(); for (Element ele : eles) { if(ele.getText().equals("按照內容修改")) { ele.setText("修改後的內容"); } } //以下的輸出檔案和上面提到的一樣 OutputFormat format=OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); org.dom4j.io.XMLWriter writer=new org.dom4j.io.XMLWriter(new FileOutputStream(new File("你的xml路徑")),format); writer.write(document); writer.close();
PS:這裡再為大家提供幾款關於xml操作的線上工具供大家參考使用:
線上XML/JSON互相轉換工具:
http://tools.jb51.net/code/xmljson
線上格式化XML/線上壓縮XML:
http://tools.jb51.net/code/xmlformat
XML線上壓縮/格式化工具:
http://tools.jb51.net/code/xml_format_compress
XML程式碼線上格式化美化工具:
http://tools.jb51.net/code/xmlcodeformat
更多關於java演算法相關內容感興趣的讀者可檢視本站專題:《Java資料結構與演算法教程》、《Java操作DOM節點技巧總結》、《Java檔案與目錄操作技巧彙總》和《Java快取操作技巧彙總》
希望本文所述對大家java程式設計有所幫助。