zoukankan      html  css  js  c++  java
  • (转)Dom4J解析

    xml文档:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <书架> 
      <书 出版社="清华"> 
        <书名>Java就业培训教程</书名>  
        <出版社></出版社>
        <出版社>清华</出版社>  
        <售价>50.00元</售价>  
        <内部价>40.99元</内部价>  
        <作者>刘清华</作者> 
      </>  
      <> 
        <书名>JavaScript网</书名>  
        <作者>张孝祥</作者>  
        <售价>28.00元</售价> 
      </> 
    </书架>  

     代码演示:

    package test.java;
    /** 
     * @author lxw 
     * @date 2016年9月6日 下午10:01:55 
     * @describe 
     */
    import java.io.FileOutputStream;
    import java.util.List;
    import org.dom4j.Document;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    import org.dom4j.Node;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
     
    public class Dom4JParser {
       //测试
       public static void main(String[] args) throws Exception {
          test08();
       }
       //1、获得某个节点的具体内容 >> 获取第2本书的 【书名】
       public static void test01() throws Exception{
          //1.获取解析器
          SAXReader reader = new SAXReader();
          //2.加载XML文档
          Document document = reader.read("src/book.xml");
          //3.获取根元素
          Element root = document.getRootElement();
          //4.找第二本书的元素
          Element book = (Element)root.elements("书").get(1);
          Element name = book.element("书名");
          // 测试+打印
          System.out.println("第2本书的书名是:"+name.getText());
       }
       //2、遍历所有的元素节点,打印元素的名称
       public static void test02() throws Exception{
          SAXReader reader = new SAXReader();
          Document document = reader.read("src/book.xml");
          Element root = document.getRootElement();
          treeWalk(root);
         
         
       }
       //2.1  递归遍历
       public static void treeWalk(Element element){
          //打印元素的名字
          System.out.println(element.getName());
          //获取该元素,孩子Node的个数
          int size = element.nodeCount();
          //循环遍历
          for (int i = 0; i < size; i++) {
             //取出第i个 孩子节点
             Node node = element.node(i);
             if (node.getNodeType() == Node.ELEMENT_NODE) {
                treeWalk((Element)node);
             }
          }
       }
       //3.修改xml的主体内容 》》修改第一本书的【作者】
       public static void test03() throws Exception{
          SAXReader reader = new SAXReader();
          Document document = reader.read("src/book.xml");
          Element root = document.getRootElement();
          //1.找到作者
          Element element = (Element)root.elements("书").get(0);
          //2.修改 主题内容
          element.element("作者").setText("刘清华");
          //3.更新XML文档
          OutputFormat format = OutputFormat.createPrettyPrint();
          format.setEncoding("UTF-8");//设置格式化编码
          //默认编码就是 【UTF-8】
          XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);
          writer.write(document);
          writer.close();
       }
       //4.增加一个节点 》》第1本书 增加 【内部价】
       public static void test04() throws Exception{
          SAXReader reader = new SAXReader();
          Document document = reader.read("src/book.xml");
          Element root = document.getRootElement();
          //1.找到第一本书
          Element book1 = root.element("书"); //默认 是 第1本  ,相当于  elements(“书”).get(0);
          //2.新建一个 节点
          Element price = DocumentHelper.createElement("作者");
          price.setText("sts");
          //3.添加
          book1.add(price);
          //4.更新XML文档
          //格式化器,使XML更规范
          OutputFormat format = OutputFormat.createPrettyPrint();
          XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);
          writer.write(document);
          writer.close();
       }
       //5.在指定位置添加一个元素节点    》》 第一本书,作者前,增加 【出版社】
       public static void test05() throws Exception{
          SAXReader reader = new SAXReader();
          Document document = reader.read("src/book.xml");
          Element root = document.getRootElement();
          //1.找到第一本书的集合列表
          List book1 = root.element("书").elements(); //默认 是 第1本  ,相当于  elements(“书”).get(0);
          //2.新建一个 节点
          Element chuban = DocumentHelper.createElement("出版社");
          chuban.setText("华");
          //3.在list中指定位置,添加
          book1.add(1,chuban);
          //4.更新XML文档
          //格式化器,使XML更规范
          OutputFormat format = OutputFormat.createPrettyPrint();
          XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);
          writer.write(document);
          writer.close();
       }
       //6.删除指定元素节点
       private static void test06()throws Exception{
          SAXReader reader = new SAXReader();
          Document document = reader.read("src/book.xml");
          Element root = document.getRootElement();
          //1.找到第一本书的作者
          Element book1 = root.element("书");
          Element author = book1.element("作者");
          //2.由父亲删儿子
          book1.remove(author);
          //3.更新XML文档
          //格式化器,使XML更规范
          OutputFormat format = OutputFormat.createPrettyPrint();
          XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);
          writer.write(document);
          writer.close();
       }
       //7.对元素属性的操作
       private static void test07()throws Exception{
          SAXReader reader = new SAXReader();
          Document document = reader.read("src/book.xml");
          Element root = document.getRootElement();
          //1.找到第一本书
          Element book1 = root.element("书");
          //2.显示属性的内容
          System.out.println(book1.attributeValue("出版社"));
       }
       //8.将xml转换成String
       private static void test08() throws Exception{
          SAXReader reader = new SAXReader();
          Document document = reader.read("src/book.xml");
          //XML转换成字符串
          String text = document.asXML();
          System.out.println(text);
       }
       //9.将String 转换成为 xml
       private static void test09() throws Exception{
          String text = "<person><name>刘清华</name></person>";
          Document document = DocumentHelper.parseText(text);
         
          //格式化器,使XML更规范
          OutputFormat format = OutputFormat.createPrettyPrint();
          XMLWriter writer = new XMLWriter(new FileOutputStream("D:/test.xml"),format);
          writer.write(document);
          writer.close();
       }
    }
     
  • 相关阅读:
    STM32 时钟配置分析
    STM32 开发板资源梳理
    STM32 摄像头实验OV2640
    STM32 TFT液晶屏与FSMC
    STM32 开发板电源与供电方式
    视觉里程计07 Qt的一些bug修改记录
    解决wireshark检测不到网卡的问题
    gdb 脚本调试
    [转] GCC 中的编译器堆栈保护技术
    使用gdbserver远程调试
  • 原文地址:https://www.cnblogs.com/lixuwu/p/5847621.html
Copyright © 2011-2022 走看看