zoukankan      html  css  js  c++  java
  • 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元</价格> 
      </> 
    </书架>
  • 相关阅读:
    FckEditor添加右键菜单;增加编辑区右键图片删除功能(asp.net )(二)
    GridView空数据时显示表头
    FckEditor添加右键菜单;增加编辑区右键图片删除功能(asp.net )(一)
    《InsideUE4》6GamePlay架构(五)Controller
    《Inside UE4》1基础概念
    《Inside UE4》2GamePlay架构(一)Actor和Component
    《InsideUE4》7GamePlay架构(六)PlayerController和AIController
    《InsideUE4》3GamePlay架构(二)Level和World
    Medusa引擎开源了
    《Inside UE4》0开篇
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/7279143.html
Copyright © 2011-2022 走看看