JAVA ·

Java dom4j 如何解析读取xml文件

XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。

XML解析在JAVA中有很多种方法,以下只是其中一个示例

<?xml version="1.0" encoding="utf-8"?>
<!--This is zhiku8.xml documents-->
<Info>
    <info>
        <name>知库吧</name>
        <time>2017-09-14 22:22:24</time>
    </info>
</Info>

JAVA 代码

package com.zhiku8.impl;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
 
public class Dom4jXMLTest {
        public static void main(String[] args) {
                Dom4jXMLTest dom = new Dom4jXMLTest();
                dom.readStringXml();
        }
         
        public static void readStringXml() {  
        try {  
            // 读取并解析XML文档  
            // SAXReader就是一个管道,用一个流的方式,把xml文件读出来  
            SAXReader reader = new SAXReader(); // User.hbm.xml表示你要解析的xml文档  
            Document doc = reader.read("S://zhiku8.xml");  
            Element rootElt = doc.getRootElement(); // 获取根节点  
            System.out.println("根节点:" + rootElt.getName()); // 拿到根节点的名称  
            for (int i = 0; i < rootElt.nodeCount(); i++) {  
                Node node_zhiku8 = rootElt.node(i);
                if (node_zhiku8 instanceof Element) {  
                    Element elementTemp = (Element) node_zhiku8;
                    System.out.println("二级节点的名:" + node_zhiku8.getName()); // 拿到第一个二级节点的名称info
                    // 获取二级节点的下面的子节点forward(三级节点)  
                    for (Iterator iterroot2 = elementTemp.elementIterator(); iterroot2.hasNext();) {  
                        Element el_zhiku8 = (Element) iterroot2.next(); // 得到一个二级节点  
                        System.out.println("info下的三级节点的名:" + el_zhiku8.getName());  
                        System.out.println("info下的三级节点的值:" + el_zhiku8.getText()); // 获取info的值  
                    }  
                }  
            }  
        } catch (DocumentException e) {  
            e.printStackTrace();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
}

最终结果

根节点:Info
二级节点的名:info
info下的三级节点的名:name
info下的三级节点的值:知库吧
info下的三级节点的名:time
info下的三级节点的值:2017-09-14 22:22:24

参与评论