XML之DOM思想的DOM4J解析器

students的xml文件

<?xml version="1.0" encoding="UTF-8"?>
<students>
    <studnet id="s001">
            <name>张三</name>
            <age>23</age>
            <tel>110</tel>
    </studnet>
    <student id = "s002">
        <name>李四</name>
        <age>32</age>
        <tel>119</tel>
    </student>
</students>
package org.westos.dom4j;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class DOM4JDemo {

    public static void main(String[] args) throws FileNotFoundException, DocumentException {
        // 导入jar包
        // 创建解析DOM4J解析对象
        SAXReader reader = new SAXReader();
        Document doc = reader.read(new FileInputStream("students.xml"));
        // 获取节点对象
        // Node node = doc.node(0); //只能获取一个节点
        // System.out.println(node.getName());
        // 获取跟标签对象
        Element rootelement = doc.getRootElement();
        // 获取第一个子标签
        Element stuElement = rootelement.element("student");
        System.out.println(stuElement.getName());
        System.out.println("-------------以下是获取所有子标签---------------------");
        // 获取所有的子标签
        List<Element> list = rootelement.elements();
        for (Element ele : list) {
            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);
        // 如果想获取所有节点
        // Iterator<Node> iterator = doc.nodeIterator();
        // while(iterator.hasNext()){
        // Node node2 = iterator.next();
        // System.out.println(node2.getName());
        // }

    }

    // private static void getNodes(Element ele) {
    // System.out.println(ele.getName());
    // Iterator<Node> iterator = ele.nodeIterator();
    // while(iterator.hasNext()){
    // Node node2 = iterator.next();
    // if(node2 instanceof Element){
    // Element ele3 = (Element) node2;
    // getNodes(ele3); //使用递归
    // }
    //
    // }
    // }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值