Java使用dom4j實現(xiàn)對xml簡單的增刪改查操作示例
本文實例講述了Java使用dom4j實現(xiàn)對xml簡單的增刪改查操作。分享給大家供大家參考,具體如下:
xml留了個結課作業(yè): 后臺用xml文件作為存儲做個迷你系統(tǒng)實現(xiàn)增刪改查的功能, 在此記錄一下
先得引入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化也會報錯
//獲得根節(jié)點的屬性對象 Element rootElem = document.getRootElement();
基本語句:
//以下操作以root為例,所有節(jié)點都可以并非只有根節(jié)點,下面的孩子指第一代孩子 //返回root節(jié)點的標簽名為"user"的孩子節(jié)點,如果有多個只返回第一個 Element contactElem = rootElem.element("user"); //獲取節(jié)點標簽之間的內(nèi)容 String text=contactElem .getText(); //返回所有的孩子節(jié)點,即一個List<Element> List<Element> eles = rootElem.elements(); //返回該節(jié)點的屬性,返回的是一個對象 Attribute rootAttr = rootElem.attribute("id"); //更改屬性值 rootAttr.setValue("更改后的id值"); //給元素新增屬性和屬性值 rootElem.addAttribute("name", "新增成功!"); //刪除節(jié)點的某屬性 rootElem.remove(rootAttr); //節(jié)點和節(jié)點的屬性都可以獲取名字(標簽名/屬性名) 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("文章內(nèi)容"); //以下的輸出文件和上面提到的一樣 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();
刪
下面示例按標簽內(nèi)容刪除一個節(jié)點
(應該按某個屬性值如id刪除,因為上例追求簡單沒設屬性)
List<Element> eles = rootElem.elements(); for (Element ele : eles) { if(ele.getText().equals("按照內(nèi)容刪除")) { 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();
改
和上面的刪除只有一句不同, 找到節(jié)點后想修改什么就 set什么就可以了
List<Element> eles = rootElem.elements(); for (Element ele : eles) { if(ele.getText().equals("按照內(nèi)容修改")) { ele.setText("修改后的內(nèi)容"); } } //以下的輸出文件和上面提到的一樣 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算法相關內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結構與算法教程》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
相關文章
java使用java.util.Date獲取指定日期的年、月、日、時、分、秒
在Java中獲取當前時間和日期是很常見的操作,也是很重要的操作,下面這篇文章主要給大家介紹了關于java使用java.util.Date獲取指定日期的年、月、日、時、分、秒的相關資料,需要的朋友可以參考下2024-01-01基于Rest的API解決方案(jersey與swagger集成)
下面小編就為大家?guī)硪黄赗est的API解決方案(jersey與swagger集成)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08SpringBoot整合RabbitMQ 手動應答(簡單demo)
這篇文章主要介紹了SpringBoot整合RabbitMQ 手動應答 簡單demo,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01