Dom4j向XML中指定位置添加、刪除、修改節點——(五)


需求:

  在第一本書作者后面增加描述 <描述>好書</描述> 

  思路:獲取書下面下的所有節點(一個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元</價格> 
  </> 
</書架>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM