zoukankan      html  css  js  c++  java
  • 2.3 使用 dom4j 对 xml文件进行 dom 解析

      1 //    使用dom4j对XML文档进行解析   CRUD
      2 public class Demo1 {
      3     
      4     //读取XML文档中第二本书的书名   <书名>javaWEB</书名>
      5     @Test
      6     public void read() throws Exception {
      7         SAXReader reader = new SAXReader(); 
      8         Document document = reader.read("src/book.xml");
      9         
     10         //拿到第二本书这个标签
     11         Element secondBook = (Element) document.getRootElement().elements("书").get(1);
     12         
     13         //拿到书名
     14         String bookName = secondBook.element("书名").getText();   //element 不带s  默认取第一个节点
     15     //  String bookName = secondBook.elementText("书名");     也可以这样写
     16         
     17         //拿到属性值
     18         String value = secondBook.element("书名").attributeValue("name");
     19         
     20         System.out.println(bookName + value);
     21     }
     22     
     23     //在第一本书添加标签          <售价>49.00元</售价>
     24     @Test
     25     public void add() throws Exception {
     26         SAXReader reader = new SAXReader(); 
     27         Document document = reader.read("src/book.xml");
     28         
     29         //拿到第一本书
     30         Element book = document.getRootElement().element("书");
     31         
     32         //添加标签
     33         book.addElement("售价").setText("49.00元");
     34         
     35         //更新XML文档
     36             //为了避免乱码问题  设置格式化输出器
     37         OutputFormat format = OutputFormat.createPrettyPrint();
     38         format.setEncoding("UTF-8");
     39         
     40         //注意  如果用字节流  如:FileOutputStream,则只能依靠write去查码表  就可以设置输出的码表
     41         //如果  用的是字符流  如:FileWriter  则调用write方法写document时  不会去查码表,而是这个字符流自己去查码表  默认查的是  gb2312
     42         //所以  一般采用字节流,然后指定输出的码表
     43         XMLWriter write = new XMLWriter(new FileOutputStream("src/book.xml"),format);
     44         write.write(document);
     45         write.close();
     46         
     47     }
     48     //在第一本书 指定位置上  添加标签<售价>49.00元</售价>
     49     @Test
     50     public void add2() throws Exception {
     51         SAXReader reader = new SAXReader(); 
     52         Document document = reader.read("src/book.xml");
     53         
     54         Element book = document.getRootElement().element("书");
     55         
     56         //dom4j在指定位置插入一个标签  要在List集合中完成  ,把指定的需添加的标签放到List集合中的指定位置,后面的标签  会自动往后排
     57         List list = book.elements();  
     58         Element newElemenrt = DocumentHelper.createElement("售价");
     59         newElemenrt.setText("49.00元");
     60         list.add(1,newElemenrt);
     61         
     62         OutputFormat format = OutputFormat.createPrettyPrint();
     63         format.setEncoding("UTF-8");
     64         XMLWriter write = new XMLWriter(new FileOutputStream("src/book.xml"),format);
     65         write.write(document);
     66         write.close();
     67     }
     68     
     69     //删除上面添加的售价节点(删除第一个出现的售价节点)
     70     @Test
     71     public void delete() throws Exception {
     72         SAXReader reader = new SAXReader(); 
     73         Document document = reader.read("src/book.xml");
     74         
     75         Element element = document.getRootElement().element("书").element("售价");
     76         element.getParent().remove(element);
     77         
     78         OutputFormat format = OutputFormat.createPrettyPrint();
     79         format.setEncoding("UTF-8");
     80         XMLWriter write = new XMLWriter(new FileOutputStream("src/book.xml"),format);
     81         write.write(document);
     82         write.close();
     83     }
     84     
     85     //更新第二本书的作者
     86     @Test
     87     public void update() throws Exception {
     88         
     89         SAXReader reader = new SAXReader(); 
     90         Document document = reader.read("src/book.xml");
     91         
     92         Element book2 = (Element) document.getRootElement().elements("书").get(1);
     93         book2.element("作者").setText("徐泽昆");
     94         
     95         OutputFormat format = OutputFormat.createPrettyPrint();
     96         format.setEncoding("UTF-8");
     97         XMLWriter write = new XMLWriter(new FileOutputStream("src/book.xml"),format);
     98         write.write(document);
     99         write.close();
    100     }
    101 }
  • 相关阅读:
    UDP最大传输字节
    [bzoj3994] [SDOI2015]约数个数和
    [bzoj3529] [Sdoi2014]数表
    [bzoj3309] DZY Loves Math
    [bzoj2693] jzptab
    [bzoj4407] 于神之怒加强版
    [bzoj3688] 折线统计
    [bzoj2301] [HAOI2011]Problem b
    [bzoj2820] YY的GCD
    [bzoj4559] [JLoi2016]成绩比较
  • 原文地址:https://www.cnblogs.com/xuzekun/p/7356136.html
Copyright © 2011-2022 走看看