DOM(document object model文档对象模型)解析xml DOM4J jar包 获取xml文件中的标签内容

DOM4J jar包 获取xml文件中的标签内容

    // 1.导入DOM4J jar包
        // 创建解析器对象
        SAXReader reader = new SAXReader();
        Document doc = reader.read(new FileInputStream("students.xml"));
        // 获取根标签对象
        Element rootElement = doc.getRootElement();
        // 获取根标签下的子标签 默认获取的是第一个子标签
        Element stuElement = rootElement.element("student");
        System.out.println(stuElement.getName());
        System.out.println("-------------以下是获取所有子标签---------------------");
        // 获取所有的子标签
        List<Element> eles = rootElement.elements();
        for (Element ele : eles) {
            System.out.println(ele.getName());

        }
        // 方式三 获取所有子标签
        System.out.println("-------------通过迭代器获取所有子标签---------------------");
        Iterator<Element> elementIterator = rootElement.elementIterator();
        while (elementIterator.hasNext()) {
            Element element = elementIterator.next();
            System.out.println(element.getName());

        }

        System.out.println("-------------以下是获取属性对象--------------------------");
        Element element = rootElement.element("student");
        Attribute attribute = element.attribute("id");
        String value = attribute.getValue();
        String name = attribute.getName();
        System.out.println(name);
        System.out.println(value);
        // 方式2:直接获取属性值
        System.out.println("------------------------------------------");
        String value2 = rootElement.element("student").attributeValue("id");
        System.out.println(value2);
        // 方式三:获取所有的属性对象
        List<Attribute> attributes = rootElement.element("student").attributes();
        for (Attribute atr : attributes) {
            String name2 = atr.getName();
            String value3 = atr.getValue();
            System.out.println(name2 + "======" + value3);

        }
        System.out.println("---------------通过迭代器获取所有的属性对象--------------------------");
        Iterator<Attribute> attributeIterator = rootElement.element("student").attributeIterator();
        while(attributeIterator.hasNext()){
            Attribute attribute2 = attributeIterator.next();
            System.out.println(attribute2.getName()+"=="+attribute2.getValue());
            
            
        }
        
        System.out.println("--------------获取标签之间的文本-----------------------");
        //层层往下拿
        String text = doc.getRootElement().element("student").element("name").getText();
        System.out.println(text);
        //方式2:
        String text2 = doc.getRootElement().element("student").elementText("name");
        System.out.println(text2);
        
        

        // 抽取方法获取所有的节点
        // getNodes(rootElement);
        // 获取节点对象
        // Node node = doc.node(0);//只能获取一个子节点

        // System.out.println(node.getName());
        // 获取所有的节点
        // Iterator<Node> iterator = doc.nodeIterator();
        // while (iterator.hasNext()) {
        // Node nodes = iterator.next();
        // System.out.println(nodes.getName());
        //
        // }

    }

    private static void getNodes(Element ele) {
        System.out.println(ele.getName());
        Iterator<Node> iterator = ele.nodeIterator();
        while (iterator.hasNext()) {
            Node nodes = iterator.next();
            if (nodes instanceof Element) {//
                Element ele2 = (Element) nodes;
                getNodes(ele2);// 递归调用 方法内部调用方法本身 注意递归比较耗费资源,因为他要不断的加载方法进栈内存

            }

        }

    }
    
    /*获取节点对象:1.node() 获取单个节点对象  2.nodeIterator(); 获取多个节点对象 只能获取子节点
     *             2.获取根标签对象 getRootElement()
     *             3.Element();获取第一个子标签  Elements() 获取所有的子标签
     *                 elememtesIterator() 获取所有子标签对象
     *             4.attribute() 获取单个属性对象  getName()获取属性的键  getValue()获取属性的值
     *                 attributes()获取所有的属性对象
     *                 attributeIterator() 获取所有的属性对象
     *                 直接获取属性对象的值 attributeValue()
     *             5.先获取到文本所在的标签对象 通过getText()拿出这个标签直接的文本
     *                 elementText("name");
     *
     *
     *
     *
     *
     *
     *
     *
     *
     *
                */

猜你喜欢

转载自blog.csdn.net/newobject1788/article/details/80642333