利用dom4j解析xml节点及属性、内容

xml

<?xml version="1.0" encoding="UTF-8" ?>
<Dataset>
    <table name="test">
        <columns>
            <column cname="reqno" type="varchar" size="50" isnull="false" ispk="true"/>
            <column cname="age" type="int" isnull="true" ispk="false"/>
            <column cname="pname" type="varchar" size="50" isnull="false" ispk="false" default="无名氏"/>
        </columns>
    </table>
</Dataset>

java代码

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

import java.io.File;
import java.util.List;

public class Test {
    @org.junit.Test
    public void test1() throws DocumentException {
        //获取解析器
        SAXReader saxReader = new SAXReader();
        //解析配置文件
        Document document = null;
        document = saxReader.read(new File("D:\\worksoft\\comparison\\test.xml"));
        //获取根标签元素
        Element rootElement = document.getRootElement();
        this.getNodes(rootElement);//从根节点开始遍历所有节点
    }

    public void getNodes(Element node) {
        System.out.println("--------------------");

        //当前节点的名称、文本内容和属性
        System.out.println("当前节点名称:" + node.getName());//当前节点名称
        System.out.println("当前节点的内容:" + node.getTextTrim());//当前节点名称
        List<Attribute> listAttr = node.attributes();//当前节点的所有属性的list
        for (Attribute attr : listAttr) {//遍历当前节点的所有属性
            String name = attr.getName();//属性名称
            String value = attr.getValue();//属性的值
            System.out.println("属性名称:" + name + "属性值:" + value);
        }

        //递归遍历当前节点所有的子节点
        List<Element> listElement = node.elements();//所有一级子节点的list
        for (Element e : listElement) {//遍历所有一级子节点
            this.getNodes(e);//递归
        }
    }
}

输出结果

--------------------
当前节点名称:Dataset
当前节点的内容:
--------------------
当前节点名称:table
当前节点的内容:
属性名称:name属性值:test
--------------------
当前节点名称:columns
当前节点的内容:
--------------------
当前节点名称:column
当前节点的内容:
属性名称:cname属性值:reqno
属性名称:type属性值:varchar
属性名称:size属性值:50
属性名称:isnull属性值:false
属性名称:ispk属性值:true
--------------------
当前节点名称:column
当前节点的内容:
属性名称:cname属性值:age
属性名称:type属性值:int
属性名称:isnull属性值:true
属性名称:ispk属性值:false
--------------------
当前节点名称:column
当前节点的内容:
属性名称:cname属性值:pname
属性名称:type属性值:varchar
属性名称:size属性值:50
属性名称:isnull属性值:false
属性名称:ispk属性值:false
属性名称:default属性值:无名氏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值