dom4j简单解析xml文件

解析xml文件我们首先需要了解什么是xml文件:

XML即为可扩展标志语言(eXtensible Markup Language)。标记指的是计算机所能理解的信息符号,通过标记,计算机就可以解析处理相关的数据。可以通过HTML定义这些标记,同时也可以使用像XML这昂扬的相关人士自由决定的标记语言,这就是语言的可扩展性。

如果需要具体了解什么是XML可参考该作者文章
http://t.csdn.cn/6EuJg

XML的主要作用:

  1. 保存数据
  2. 作为项目的配置文件
  3. 作为网络数据传输的格式(现以json格式为主)

dom4j解析xml文件:

  1. 创建maven项目
  2. 在pom.xml中导入依赖3.
<!-- dom4j -->
<dependency>
    <groupId>dom4j</groupId>
    <artifactId>dom4j</artifactId>
    <version>1.6.1</version>
</dependency>
  1. 在resources目录下创建一个xml文件(用于测试不需要太复杂,了解解析xml的原理即可)

<?xml version="1.0" encoding="utf-8" ?>
<class>
<!--
    元素是XML的重要组成部分,元素也被称为标签
    每个XML文件必须要有一个根标签
    标签有开始标签和结束标签组成,开始标签和结束标签可以写标签,也可以是文本字符串
    标签可以嵌套使用,但是不能随便嵌套
    标签名必须准守命名规则和命名规范
-->
<!--
    属性是标签的组成部分,属性只能定义在开始标签中
    属性定义的格式:属性名=属性值,属性值需要使用""包含起来
    开始标签中可以定义多个属性,但是多个属性的属性名不能相同
    属性名必须准守命名规则和命名规范
-->
    <student rollno="西游记">
        <作者>吴承恩</作者>
        <人物一>猴子</人物一>
        <人物二>唐僧</人物二>
        <人物三>猪儿</人物三>
    </student>
    <student rollno="红楼梦">
        <人物一>林黛玉</人物一>
        <人物二>贾宝玉</人物二>
        <人物三>鑫儿</人物三>
        <marks>85</marks>
    </student>
    <student rollno="三国演义">
        <人物一>张飞</人物一>
        <人物二>关羽</人物二>
        <人物三>刘备</人物三>
        <marks>85</marks>
    </student>
</class>
  1. 解析xml具体java代码:
    Dom4j的常用API说明:
    Element getRootElement():获取XML文件的根节点
    String getName():返回标签的名称
    List < Element > elements():获取标签所有的子标签
    String arrtributeVallue(String name) :获取指定属性名称的属性值
    String getText():获取标签的文本
    String elementText(String name):获取指定名称的子标签的文本,返回子标签文本的值
public class Test {
    public static void main(String[] args) throws DocumentException {
        //创建Reader对象
        SAXReader re = new SAXReader();
        File path = new File("src/main/resources/test.xml");
        //加载xml 获取Document
        Document document = re.read(path);
        //迭代器获取节点
        Element rootElement = document.getRootElement();
        Iterator iterator = rootElement.elementIterator();
        //遍历节点
        while (iterator.hasNext()) {
            Element stu = (Element) iterator.next();
            //获取该节点的信息
            System.out.println(stu.getName());
            //将节点通过attributes方法 转换为List数组
            List<Attribute> attributes = stu.attributes();
            System.out.println("=====获取属性=====");
            //打印属性
            for (Attribute attribute:attributes){
                System.out.println(attribute.getStringValue());
            }
            System.out.println("=====遍历子节点=====");
            Iterator iterator1 = stu.elementIterator();
            while (iterator1.hasNext()) {
                Element stuChild = (Element) iterator1.next();
                System.out.println("节点名:"+stuChild.getName()+"----节点值"+stuChild.getStringValue());
            }
        }
    }
}

输出结果:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值