首先引入 dom4j 的 jar

a
package com.hucheng.xmlParse;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class XmlUtils
{
    
    public static void main(String[] args)
    {
        long lasting = System.currentTimeMillis();
        try
        {
            // 获取 xml 文件
            File f = new File("data.xml");
            SAXReader reader = new SAXReader();
            Document doc = reader.read(f);
            // 获取到根节点
            Element node = doc.getRootElement();
            // 判断跟节点下面是否还有子节点
            if (node.elementIterator().hasNext())
            {
                Element next = (Element)node.elementIterator().next();
            }
            Iterator<Element> iterator = node.elementIterator();
            // 开始循环子节点
            while(iterator.hasNext()){  
                Element e = iterator.next();  
                listNodes(e);
            }  
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        System.out.println("运行时间:" + (System.currentTimeMillis() - lasting) + " 毫秒");
    }
    
    /**
     * @描述:循环子节点
     * @作者:chen
     * @时间:2017 年 8 月 17 日 上午 10:53:06
     * @param node
     */
    protected static void listNodes(Element node)
    {
        // 首先获取当前节点的所有属性节点  
        List<Attribute> list = node.attributes();  
        // 遍历属性节点  
        for(Attribute attribute : list){  
            System.out.println("属性"+attribute.getName() +":" + attribute.getValue());  
        }  
        // 如果当前节点内容不为空,则输出  
        if(!(node.getTextTrim().equals(""))){
             System.out.println( node.getName() + ":" + node.getText());
        }  
        
        // 同时迭代当前节点下面的所有子节点  
        // 使用递归  
        Iterator<Element> iterator = node.elementIterator();  
        while(iterator.hasNext()){  
            Element e = iterator.next();  
            listNodes(e);  
        }  
    }
}

下面是 data.xml

l
<?xml version="1.0" encoding="UTF-8"?>
<VALUES>
<VALUE id = "1" name = "第一个">
<NO>鄂B74110</NO>
<ADDR>湖北省黄石市白沙镇</ADDR>
</VALUE>
<VALUE id = "2" name = "第二个">
<NO>鄂B74111</NO>
<ADDR>湖北省黄石市白沙镇白沙老街</ADDR>
</VALUE>
<VALUE id = "3" name = "第三个">
<NO>鄂B74112</NO>
<ADDR>湖北省黄石市白沙镇白沙中学</ADDR>
</VALUE>
</VALUES>

控制台会输出:

属性id:1
属性name:第一个
NO:鄂B74110
ADDR:湖北省黄石市白沙镇
属性id:2
属性name:第二个
NO:鄂B74111
ADDR:湖北省黄石市白沙镇白沙老街
属性id:3
属性name:第三个
NO:鄂B74112
ADDR:湖北省黄石市白沙镇白沙中学
运行时间:71 毫秒
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

vayi 微信支付

微信支付

vayi 支付宝

支付宝

vayi 贝宝

贝宝