需求:
在第一本書作者后面增加描述 <描述>好書</描述>
思路:獲取書下面下的所有節點(一個list集合),在list集合指定位置添加一個元素(list.add(index,object)),最后寫入原xml文檔。
原來XML文檔
1 <?xml version="1.0" encoding="utf-8"?> 2 3 <書架> 4 <書> 5 <書名>Java高級</書名> 6 <作者>武陟縣</作者> 7 <價格>200元</價格> 8 </書> 9 <書> 10 <書名 name="xxxxxxxxxxx">Java中級</書名> 11 <作者>打火機</作者> 12 <價格>2000元</價格> 13 </書> 14 </書架>
-------------------------------------------------------指定位置添加節點-------------------------------------
Java代碼:
1 // 在指定位置添加一個節點 2 @Test 3 public void test2() throws Exception { 4 SAXReader reader = new SAXReader(); 5 Document document = reader.read(new File("src/book.xml")); 6 Element root = document.getRootElement(); 7 8 // 獲取第一個書節點 9 Element shu = (Element) root.elements("書").get(0); 10 // 獲取第一個節點下的所有節點 11 List list = shu.elements(); //[書名,作者,價格] 12 13 // 創建一個節點 14 Element miaoshu = DocumentHelper.createElement("miaoshu"); 15 miaoshu.setText("一本好書"); 16 list.add(2,miaoshu); 17 18 // 格式化輸出流,同時指定編碼格式。也可以在FileOutputStream中指定。 19 OutputFormat format = OutputFormat.createPrettyPrint(); 20 format.setEncoding("utf-8"); 21 22 XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format); 23 writer.write(document); 24 writer.close(); 25 }
結果:
<?xml version="1.0" encoding="utf-8"?> <書架> <書> <書名>Java高級</書名> <作者>武陟縣</作者> <miaoshu>一本好書</miaoshu> <價格>200元</價格> </書> <書> <書名 name="xxxxxxxxxxx">Java中級</書名> <作者>打火機</作者> <價格>2000元</價格> </書> </書架>
-----------------------------------------刪除節點----------------------------------------------
1 // 刪除節點 2 @Test 3 public void delete() throws Exception { 4 SAXReader reader = new SAXReader(); 5 Document document = reader.read(new File("src/book.xml")); 6 Element root = document.getRootElement(); 7 8 // 獲取第一個書節點 9 Element shu = (Element) root.elements("書").get(0); 10 Element miaoshu = (Element) shu.element("miaoshu"); 11 // 獲取到miaoshu節點的父節點並刪除miaoshu節點 12 miaoshu.getParent().remove(miaoshu); 13 14 // 格式化輸出流,同時指定編碼格式。也可以在FileOutputStream中指定。 15 OutputFormat format = OutputFormat.createPrettyPrint(); 16 format.setEncoding("utf-8"); 17 18 XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"), format); 19 writer.write(document); 20 writer.close(); 21 22 }
結果:
<?xml version="1.0" encoding="utf-8"?> <書架> <書> <書名>Java高級</書名> <作者>武陟縣</作者> <價格>200元</價格> </書> <書> <書名 name="xxxxxxxxxxx">Java中級</書名> <作者>打火機</作者> <價格>2000元</價格> </書> </書架>
-------------------------------------修改節點-------------------------------------------------
1 // 修改節點 2 @Test 3 public void update() throws Exception { 4 SAXReader reader = new SAXReader(); 5 Document document = reader.read(new File("src/book.xml")); 6 Element root = document.getRootElement(); 7 8 // 獲取第一個書節點 9 Element shu = (Element) root.elements("書").get(0); 10 Element shuming = (Element) shu.element("書名"); 11 // 獲取到miaoshu節點的父節點並刪除miaoshu節點 12 shuming.setText("一本爛書!!"); 13 14 // 格式化輸出流,同時指定編碼格式。也可以在FileOutputStream中指定。 15 OutputFormat format = OutputFormat.createPrettyPrint(); 16 format.setEncoding("utf-8"); 17 18 XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"), format); 19 writer.write(document); 20 writer.close(); 21 22 }
結果:
<?xml version="1.0" encoding="utf-8"?> <書架> <書> <書名>一本爛書!!</書名> <作者>武陟縣</作者> <價格>200元</價格> </書> <書> <書名 name="xxxxxxxxxxx">Java中級</書名> <作者>打火機</作者> <價格>2000元</價格> </書> </書架>
