您的位置:首页 > 其它

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

2017-10-14 21:24 579 查看
    // 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");

     *

     *

     *

     *

     *

     *

     *

     *

     *

     *

                */

   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: