dom4j读取xml文件获取所有标签

来源:互联网 发布:方正电子书数据库 编辑:程序博客网 时间:2024/05/21 19:32

这里写图片描述
(图片引用传智教育)

其实读取所有节点不易理解的地方就是Element (标签节点)和Node(节点)为什么要转来转去

1 . 首先是getRootElement方法,这个方法返回的是一个标签节点 ,标签节点可以调用nodeIterator()函数,返回一个迭代器
2 . 这时候用迭代器迭代出来的全部是Node节点,因为并不是所有的node节点都有子节点对象,所以并不能直接用Node节点来调用nodeIterator()函数
3 . 进行判断这个Node节点是不是Element节点(标签节点)
4 . 如果这个Node节点是标签节点,强转为Element节点(标签节点),然后在调用nodeIterator()函数
5 . 这样就可以把所有的节点信息全部读出

Demo2.java

import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.Node;import org.dom4j.io.SAXReader;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.util.Iterator;/** * Created by LiJing on 2017/8/27. */public class Demo1 {    public static void main(String[] args) throws DocumentException {        //获取dom对象        SAXReader reader = new SAXReader();        Document document = reader.read(".//src//contact.xml");        //获取根节点        Element element = document.getRootElement();        getChildNodes(element);    }    public static void getChildNodes(Element element){        System.out.println(element.getName());        Iterator<Node> it = element.nodeIterator();        while(it.hasNext()){            Node node = it.next();            //只有标签节点才有子节点 所以判断这个节点是否是标签节点            if(node instanceof Element){                Element element1 = (Element)node;                getChildNodes(element1);            }        }    }}

contact.xml

<?xml version="1.0" encoding="utf-8"?><contactList>    <contact id="001">        <name>张三</name>        <age>20</age>        <phone>134222223333</phone>        <email>zhangsan@qq.com</email>        <qq>432221111</qq>    </contact>    <contact id="002">        <name>李四</name>        <age>20</age>        <phone>134222225555</phone>        <email>lisi@qq.com</email>        <qq>432222222</qq>    </contact></contactList>
原创粉丝点击