zoukankan      html  css  js  c++  java
  • dom4j解析器sax解析xml文件

    1.使用dom4j解析器解析xml

    ***解析器dom4j是由dom4j组织提供的,针对xml进行解析。dom4j不是Javase的一部分,使用时需要导入dom4j的jar包(官网下载)

      在eclipse里,复制jar包,然后新建文件夹lib粘贴进入,然后单击鼠标右键jar包----->build path----->add to build path

      看到jar包变成奶瓶样子,表示导入成功。

    * 得到document对象

          SAXReader reader=new SAXReader();

          Document document=reader.read(url);

    *document对象的父接口是Node

          **如果在document对象里找不到想要的方法,就去Node里面去找。

    *document里的方法getRootElement():得到根节点,并返Element

    *Element也是一个接口,父接口是Node

           **Element和Node里的方法

            getParent():获取父节点

            addElement():添加标签

    需求:查询所有name元素里的值

    代码:

    animal.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <animal>
    <cat id1="sususu">
    <name>汤姆</name>
    <color>black</color>
    <age>10</age>
    </cat>
    <cat>
    <name>丑小鸭</name>
    <color>yellow</color>
    <age>15</age>
    </cat>
    </animal>

     dom4j.java

    package  example4;
    import java.io.FileOutputStream;
    import java.util.List;
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;


    class dom4j{
        public static void main(String[] args) throws Exception {
          /*selectName();
            selectOne();
            selectSecond();
            addsex();*/
            addNameBefore();

           modifyAge();

      deleteFriend();


        }

    //查询第一个name元素的值

    public static void selectOne() throws Exception {
            SAXReader saxreader = new SAXReader();
            Document document = saxreader.read("src/example4/animal.java");
            Element root = document.getRootElement();
            Element cat = root.element("cat");
            Element name = cat.element("name");
            String s=name.getText();
            System.out.println(s);
        }

     //在第一个标签cat的末尾添加一个<sex>男</sex>标签
        public static void addsex() throws DocumentException, Exception {
            SAXReader saxreader=new SAXReader();
            Document document=saxreader.read("src/example4/animal.xml");
            Element root=document.getRootElement();
            //得到第一个cat元素
            Element cat1=root.element("cat");
            //在cat虾米那直接添加元素
            Element sex1=cat1.addElement("sex");
            //在sex下面添加文本
            sex1.setText("男");
            //回写xml

      //这是一个漂亮的格式,可以有缩进的效果
            OutputFormat format=OutputFormat.createPrettyPrint();
            XMLWriter xmlWriter=new XMLWriter(new FileOutputStream("src/example4/animal.xml"), format);    
            xmlWriter.write(document);
            xmlWriter.close();
        }

    //在特定位置添加新标签,在第二个cat标签之前添加<friend>丫丫</friend>
        public static void addNameBefore() throws Exception {
            SAXReader saxReader=new SAXReader();
            Document document=saxReader.read("src/example4/animal.xml");
            Element root=document.getRootElement();
            List<Element> list=root.elements("cat");
            //创建元素使用
            Element friend=DocumentHelper.createElement("friend");
            friend.setText("丫丫");
            list.add(1, friend);
            //回写xml
            OutputFormat format=OutputFormat.createPrettyPrint();
            XMLWriter xmlWriter=new XMLWriter(new FileOutputStream("src/example4/animal.xml"), format);
            xmlWriter.write(document);
            xmlWriter.close();
        }


        //修改第一个cat下的<age>30</age>
        public static void modifyAge() throws Exception {
            SAXReader saxReader=new SAXReader();
            Document document=saxReader.read("src/example4/animal.xml");
            Element root=document.getRootElement();
            Element cat1=root.element("cat");
            Element age=cat1.element("age");
            age.setText("30");
            OutputFormat format=OutputFormat.createPrettyPrint();
            XMLWriter xmlWriter=new XMLWriter(new FileOutputStream("src/example4/animal.xml"), format);
            xmlWriter.write(document);
            xmlWriter.close();
        }

    // 删除第一个cat下面的<fdeleteFriend()riend>丫丫</friend>
        public static void deleteFriend() throws Exception {
            SAXReader saxReader = new SAXReader();
            Document document = saxReader.read("src/example4/animal.xml");
            Element root = document.getRootElement();
            Element friend = root.element("friend");
            // 删除friend元素
            // 通过父元素来删除子元素
            //获取父节点
            //Element parent=friend.getParent();
            root.remove(friend);
            // 这是一个漂亮的格式,可以有缩进的效果
            OutputFormat format = OutputFormat.createPrettyPrint();
            XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/example4/animal.xml"), format);
            xmlWriter.write(document);
            xmlWriter.close();
        }


            //获取第一个cat里面的属性的值
        public static void getValues() throws Exception {
            SAXReader saxreader = new SAXReader();
            Document document = saxreader.read("src/example4/animal.xml");
            Element root = document.getRootElement();
            Element cat = root.element("cat");
            //得到属性值
            String id1=cat.attributeValue("id1");
            System.out.println(id1);
        }

    // 获取第二个name元素里的值
        public static void selectSecond() throws Exception {
            SAXReader saxreader=new SAXReader();
            Document document=saxreader.read("src/example4/animal.xml");
            Element root=document.getRootElement();
            List<Element> list=root.elements("cat");
            Element cat2=list.get(1);
            Element name2=cat2.element("name");
            String s=name2.getText();
            System.out.println(s);
        }


        // 查询xml中所有name元素的值
            public static void selectName() throws Exception {
                // 创建解析器
                SAXReader saxreader = new SAXReader();
                //得到document对象
                Document document=saxreader.read("src/example4/animal.xml");
                //得到根节点
                Element root=document.getRootElement();
                //得到cat结点
                List<Element> list=root.elements("name");
                //得到cat元素下的name元素
                for (Element element: list) {
                //element是每一个cat元素
                //得到cat下面的name元素
                Element name1=element.element("name");
                String s=name1.getText();
                System.out.println(s);    
            }
        }
    }

    好文要顶 关注我 收藏该文
  • 相关阅读:
    RN常用布局和CSS
    RN常用组件
    海屯天地技术服务支持
    微前端应用解决方案
    React组件复用方式
    Webpack-CodeSplit(按需加载)
    Webpack-CodeSplit(静态文件篇)
    Webpack抽离第三方类库以及common解决方案
    Javascript十六种常用设计模式
    React hooks详解
  • 原文地址:https://www.cnblogs.com/aasu/p/9131248.html
Copyright © 2011-2022 走看看