zoukankan      html  css  js  c++  java
  • SAX解析DOM4J的方法总结

    《二 、利用SAX进行DOM解析DOM4J的基本练习》
        一、 本次总结用到的xml文档
        <?xml version="1.0" encoding="UTF-8"?>
            <书架>
                <书 出版社="人民出版社">
                    <书名>三国演义</书名>
                    <作者>罗贯中</作者>
                    <售价>100</售价>
                    <内部价>99</内部价>
                </书>
                <书>
                    <书名>西游记</书名>
                    <作者>吴承恩</作者>
                    <售价>1</售价>
                </书>
            </书架>
        二 、SAX进行解析的方法:
            **在xml文档中得到某个节点的具体内容:例如:得到第二本书的作者
            1、得到document对象
                SAXReader reader = new SAXReader();
                Document document = reader.read("src/book.xml');
            2、得到根元素
                Element root = document.getRootElement();
            3、找到第二本书
                List<Element> secodBook =root.elements("书");//得到根元素的子元素
                Element book = secodBook.get(1);//得到第二本书
            4、找到第二本书的作者
                Element Author = book.element("作者");
            5、拿到内容输出内容
                system.out.println("请输出得到的内容"+Author.getText());
                Assert.assertEquals("吴承恩",Author.getText());//JUnit测试中获取到的值和自己预期的值是否相等
            
        三、SAX解析:遍历xml文档中所有的元素节点
            1、得到document对象
                SAXReader reader = new SAXReader();
                Document document = reader.read("src/book.xml');
            2、得到根元素
                Element root = document.getRootElement();
                treeWorker(root);//使用treeWorker方法,遍历元素进行,打印他们的名字
            3、创建treeWorker()方法
                private void treeWorker(root){
                    system.out.println(root.getName());
                        List<Element> es = root.elements();//这是个元素的list集合,带有范型
                        //循环循环输出
                        for(Element e: es){//增强for循环打印输出
                            treeWorker(e);//调用treeWorker()方法进行循环遍历
                        }
                }
        四、SAX解析:修改某个元素节点的主题内容:例如:修改第二本书的售价
            1、得到document对象
                SAXReader reader = new SAXReader();
                Document document = reader.read("src/book.xml");
            2、得到根元素
                Element root = document.getRootElement();
            3、得到第二本书的售价
                List<Element> book = root.elements("书");
                Element secondBook =  book.get(1);//获取第二本书
                Element secondBookPrice = secondBook.element("售价");//获取到第二本书的售价
                //设置文本内容
                secondBookPrice。setText("666666");
                //写回到xml文档中
                OutputStream out = new FileOutputStream();
                OutputFormat format = OutputFormat.createrPrettyPrint();
                format.setEncoding("UTF-8");//设定编码格式
                XMLWriter writer = new XMLWirter(out,format);
                writer.write(docuemnt);//写回到xml文档中
                writer.close();//关闭输出流
        五、SAX解析:向指定元素节点中增加子元素节点:给第一本书添加批发价
            1、得到document对象
                SAXReader reader = new SAXReader();
                Document document = reader.read("src/book.xml");
            2、得到根元素
                Element root = document.getRootElement();
            3、得到第一本书
                Element firstBook = root.element("书");
                //添加标签及其文本内容
                firstBook.addElement("批发价").setText("333");
            4、写回到xml文档中
                OutputStream out = new FileOutputStream();
                OutputFormat format = OutputFormat.createrPrettyPrint();
                format.setEncoding("UTF-8");//设定编码格式
                XMLWriter writer = new XMLWirter(out,format);
                writer.write(docuemnt);//写回到xml文档中
                writer.close();//关闭输出流
        六、SAX解析:向指定元素节点增加同级元素节点:在第一本书售价的前面添加内部价
            1、得到document对象
                SAXReader reader = new SAXReader();
                Document document = reader.read("src/book.xml");
            2、得到根元素
                Element root = document.getRootElement();
            3、得到第一本书
                Element firstBook = root.element("书");
                List<Element> children = firstBook.elements();//得到第一本书的所有子元素节点:List
                //借助DocumentHelper创建内部元素价
                Element price= DocumentHelper.createElement("内部价");
                price.setText("99");
            4、写回到xml文档中
                OutputStream out = new FileOutputStream();
                OutputFormat format = OutputFormat.createrPrettyPrint();
                format.setEncoding("UTF-8");//设定编码格式
                XMLWriter writer = new XMLWirter(out,format);
                writer.write(docuemnt);//写回到xml文档中
                writer.close();//关闭输出流

        七、SAX解析:删除指定元素节点:删除第一本书的批发价
            1、得到document对象
                SAXReader reader = new SAXReader();
                Document document = reader.read("src/book.xml");
            2、得到根元素
                Element root = document.getRootElement();
            3、得到第一本书
                Element firstBook = root.element("书");
                Element price= firstBook.element("批发价");//使用上层的父元素进行删除
                firstBook.remove(price);
            4、写回到xml文档中
                OutputStream out = new FileOutputStream();
                OutputFormat format = OutputFormat.createrPrettyPrint();
                format.setEncoding("UTF-8");//设定编码格式
                XMLWriter writer = new XMLWirter(out,format);
                writer.write(docuemnt);//写回到xml文档中
                writer.close();//关闭输出流
        八、、SAX解析:操作xml文件属性:第一本书添加出版社属性
            1、得到document对象
                SAXReader reader = new SAXReader();
                Document document = reader.read("src/book.xml");
            2、得到根元素
                Element root = document.getRootElement();
            3、得到第一本书
                Element firstBook = root.element("书");
                firstBook.setAttribute("出版社","人民出版社");
            4、写回到xml文档中
                OutputStream out = new FileOutputStream();
                OutputFormat format = OutputFormat.createrPrettyPrint();
                format.setEncoding("UTF-8");//设定编码格式
                XMLWriter writer = new XMLWirter(out,format);
                writer.write(docuemnt);//写回到xml文档中
                writer.close();//关闭输出流

  • 相关阅读:
    PAT-字符串处理-A 1001 A+B Format (20分)
    PAT-字符串处理-B 1048 数字加密 (20分)
    数据库-第二章 关系数据库-2.3 关系的完整性
    数据库-第二章 关系数据库-2.2 关系操作
    数据库-第二章 关系数据库-2.1 关系数据结构及形式化定义
    IDLE打开Python报错 api-ms-win-crt-runtimel1-1-0.dll缺失的解决方案
    老毛桃pe安装系统
    LeetCode 213. House Robber II (动态规划)
    LeetCode 198. House Robber(DP)
    LeetCode 211. Add and Search Word
  • 原文地址:https://www.cnblogs.com/XMMDMW/p/5288514.html
Copyright © 2011-2022 走看看