【Java寒假打卡】Java基础-XML文件

news2024/11/26 16:29:12

【Java寒假打卡】Java基础-XML文件

    • 概述
    • 标签的规则
    • xml的语法规则
    • 解析XML
    • XML解析的准备工作
    • XML解析文件的代码实现

概述

在这里插入图片描述

标签的规则

在这里插入图片描述

xml的语法规则

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8" ?>
<!--本xml文件用于描述多个学生信息-->
<students>
<!--第一个学生的信息-->
    <student id = "1">
        <name>张三</name>
        <age>22</age>
        <info>学生&lt; &gt;&gt;&gt;的信息</info>
        <message><![CDATA[内容 <<<<<>>>>>]]></message>
    </student>

<!-- 第二个学生的信息-->
    <student id = "2">
        <name>李四</name>
        <age>24</age>
    </student>
</students>

解析XML

在这里插入图片描述

层层拨开,从最外层标签开始

  • Document对象:整个xml文档
  • Element对象:所有标签
  • Attribute对象:所有属性
  • Text对象:所有文本内容

XML解析的准备工作

  • 下载dom4j
    在这里插入图片描述

  • 找到jar包并复制

在这里插入图片描述

在这里插入图片描述

  • 导入当前项目当中

在这里插入图片描述

XML解析文件的代码实现

在这里插入图片描述

  • 获取根标签下面的所有的子标签
package com.hfut.edu.XMLP;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import javax.xml.parsers.SAXParser;
import java.io.File;
import java.util.List;

public class XmlParse {
    public static void main(String[] args) throws DocumentException {
        //  获取一个解析器对象
        SAXReader saxReader = new SAXReader();

        // 使用解析器对象将xml文件加载到内存中,并返回一个文档对象
        Document document = saxReader.read(new File("D:\\CODE\\JavaBase\\APIUse\\XML\\student.xml"));

        // 获取根标签
        Element rootElement = document.getRootElement();

        // 通过跟标签来获取student标签
        // elements()可以获取调用者所有的子标签 会把这些子标签放到一个集合中 并进行返回
        List list = rootElement.elements();
        System.out.println(list.size());

    }
}
  • 获取指定标签下面的所有子标签
package com.hfut.edu.XMLP;

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

import javax.xml.parsers.SAXParser;
import java.io.File;
import java.util.List;

public class XmlParse {
    public static void main(String[] args) throws DocumentException {
        //  获取一个解析器对象
        SAXReader saxReader = new SAXReader();
        // 使用解析器对象将xml文件加载到内存中,并返回一个文档对象
        Document document = saxReader.read(new File("D:\\CODE\\JavaBase\\APIUse\\XML\\student.xml"));

        // 获取根标签
        Element rootElement = document.getRootElement();
        // 指定标签 再获取子标签
        List<Element> list = rootElement.elements("student");
        System.out.println(list.size());

        for (Element element : list) {
            System.out.println(element);

            Attribute attribute = element.attribute("id");// 获取id属性
            String id = attribute.getValue();

            //获取name标签
            Element nameElement = element.element("name");
            // 获取这个标签的标签体内容
            String text = nameElement.getText();
            System.out.println(text);
        }

    }
}
  • 获取所有标签的内容,然后封装成对象
package com.hfut.edu.XMLP;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import javax.xml.parsers.SAXParser;
import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class XmlParse {
    public static void main(String[] args) throws DocumentException {
        //  获取一个解析器对象
        SAXReader saxReader = new SAXReader();
        // 使用解析器对象将xml文件加载到内存中,并返回一个文档对象
        Document document = saxReader.read(new File("D:\\CODE\\JavaBase\\APIUse\\XML\\student.xml"));

        // 获取根标签
        Element rootElement = document.getRootElement();
        // 指定标签 再获取子标签
        List<Element> list = rootElement.elements("student");
        System.out.println(list.size());

        // 创建学生对象集合
        ArrayList<Student> studentArrayLists = new ArrayList<>();
        
        
        for (Element element : list) {
            System.out.println(element);
            Attribute attribute = element.attribute("id");// 获取id属性
            String id = attribute.getValue();

            //获取name标签
            Element nameElement = element.element("name");
            // 获取这个标签的标签体内容
            String text = nameElement.getText();
            System.out.println(text);

            Element ageElement = element.element("age");
            String age = ageElement.getText();
            System.out.println(age);

            // 将上面获取到的元素封装成学生对象
            Student s = new Student(id,text,Integer.parseInt(age));// 将三个元素封装成学生对象
            studentArrayLists.add(s);
        }

        for (Student studentArrayList : studentArrayLists) {
            System.out.println(studentArrayList);
        }

    }
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/167680.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

教程: nodejs 做微信公众号开发,回复 xml 消息

教程&#xff1a; nodejs 做微信公众号开发&#xff0c;回复 xml 消息 首先需要你的后台跟服务器已经可以建立连接&#xff0c;这个不再冗述看官方教程就好 接入指南 。此篇介绍的是如何获取用户发来的信息&#xff0c;并回复它。 一、接收 xml 信息内容 我用的是 nodejs 的…

Android应用模块化开发指南

Android应用模块化开发指南 包含多个Gradle模块的项目称为多模块项目。本文包含多模块应用项目的最佳实践和推荐模式。 代码规模变大带来的问题 可扩缩性、可读性和整体代码质量会随着时间的推移而降低&#xff0c;代码维护者未采取积极的措施来保持易于维护的结构。模块化是…

【营销】uplift建模方案-专利总结

之前准备写专利的时候浏览了一下其他公司的专利&#xff0c;对于one model&#xff0c;还是two model&#xff0c;基模型是什么做了简单总结。 浦发银行&#xff08;CN 112446541 A&#xff09;——one model&#xff08;标签转换&#xff09; 基模型&#xff1a;NN分类融合m…

经济学学习(宏观)

--------------------------------------- 第8篇&#xff1a;宏观经济学的数据 --------------------------------------- 23. 一国收入的衡量(GDP&#xff0c;通胀) gdp衡量总收入和总支出&#xff0c;总收入总支出 某一既定时期&#xff0c;一个国家内生产的所有最终商品…

【科研试剂】16-Heptadecynoic acid,93813-16-2,16-庚二酸

【中文名称】16-庚二酸【英文名称】 16-Heptadecynoic acid&#xff0c;16-Heptadecynoic COOH【结 构 式】【CAS】93813-16-2【分子式】C17H30O2【分子量】266.43【纯度标准】95%【包装规格】1g&#xff0c;5g&#xff0c;10g【是否接受定制】可进行定制&#xff0c;定制时间周…

Java日志系统介绍和slf4j的使用

目录1. 日志系统介绍2. slf4j的使用2.1 slf4j的入门2.2 slf4j绑定日志框架1. 日志系统介绍 日志门面位于应用程序和日志框架之间&#xff0c;日志门面提供一个抽象的能力&#xff0c;日志框架进行具体的日志实现。可以很方便的更换日志框架。类似JDBC驱动 日志门面有&#xf…

业务逻辑漏洞

1、容易忽略的低危漏洞以及延伸利用 一、容易忽略的低危漏洞以及延伸利用 在挖洞的过程当中&#xff0c;比如我们碰到信息泄露漏洞&#xff0c;但是我们不知道这个是信息泄露&#xff1b;或者说我们碰到一个xss&#xff0c;我们不会利用&#xff0c;只能弹个窗&#xff0c;比如…

AcWing 4510. 寻宝!大冒险!(暴力枚举)

题目如下&#xff1a; 输入样例1&#xff1a; 5 100 2 0 0 1 1 2 2 3 3 4 4 0 0 1 0 1 0 1 0 0输出样例1&#xff1a; 3样例 111 解释 绿化图上 (0,0)(0,0)(0,0)、(1,1)(1,1)(1,1) 和 (2,2)(2,2)(2,2) 三处均可能埋有宝藏。 输入样例2&#xff1a; 5 4 2 0 0 1 1 2 2 3 3 …

C++入门:命名空间

目录 一.前言 C关键字(C98)总览&#xff1a; 一.作用域 二.命名冲突 三.命名空间 命名空间定义&#xff1a; 命名空间的嵌套定义&#xff1a; 四.命名空间的使用 五.命名空间的本质 一.前言 C是从C语言延伸出来的编程语言&#xff0c;C兼容了C语言百分之九十九的语法…

Lr 12 ACR 15:蒙版

Adobe Camera Raw &#xff08;简称为 ACR&#xff09;与 Lightroom Classic&#xff08;简称为 Lr 或 LrC&#xff09;使用同一引擎&#xff0c;其中的蒙版 Mask功能变得日益强大。基于人工智能技术&#xff08;AI 驱动&#xff09;&#xff0c;可快速而精准地选择主体、天空、…

Redis - Redis 6.0 新特性之多线程模型

1. Redis6.0之前的版本真的是单线程么&#xff1f; 否&#xff01;Redis 在处理客户端的请求时&#xff0c;包括获取 (socket 读)、解析、执⾏、内容返回 (socket 写) 等都由⼀个顺序串⾏的主线程处理&#xff0c;这就是所谓的「单线程」。 在执行命令阶段&#xff1a;Redis是…

【jQuery超快速入门教程】上篇

&#x1f340;作者主页&#xff1a;在下周周ovo&#x1f340;系列专栏&#xff1a;从零开始百天学习前端基础&#x1f340;其他平台&#xff1a;博客园1️⃣前言&#xff1a;jQuery必备网站jQuery下载地址jQuery中文文档jQuery插件库1️⃣一、为什么要学习jQuery&#xff1f;jQ…

蓝库云|2023年企业4个数字化转型关键,成功之路近在咫尺

数字化转型&#xff1a;由上而下的过程 企业数字化转型最主要的原因在于企业管理者的决定。数字化转型是由「上」而「下」的过程&#xff0c;如果管理层没有转型的确切目标与规划&#xff0c;与竞争者相比之下&#xff0c;经营模式将会原地踏步、无法超越。蓝库云根据最新客户…

C++:C++全局变量:看完还不懂全局变量来捶我

我们知道&#xff0c;全局变量时C语言语法和语义中一个很重要的知识点&#xff0c;首先它的存在意义需要从三个不同角度去理解。 对于程序员来说&#xff0c;它是一个记录内容的变量&#xff08;variable&#xff09;对于编译/链接器来说&#xff0c;它是一个需要解析的符号 &a…

java使用JSch连接服务器实现命令交互

java使用JSch连接服务器实现命令交互1、通过maven引入jsch2、代码编写&#xff08;1&#xff09;创建MyUserInfo&#xff08;2&#xff09;创建Shell类连接服务器&#xff08;3&#xff09;启动3、测试结果JSch官网 1、通过maven引入jsch <dependency><groupId>co…

万字长文--详解Git(快速入门)

Git基础与扩展Git1、Git概念1.1 关于版本控制1.2 Git基础概念2、Git基础操作2.1 安装并配置Git2.2 Git的基本操作3、Github操作3.1 关于开源3.2 注册账号3.3 远程仓库的使用4、Git分支操作4.1 本地分支操作4.2 远程分支操作Git 1、Git概念 1.1 关于版本控制 文件的版本管理的…

7 种常用的数据挖掘技术分享

有人说&#xff1a;一个人从1岁活到80岁很平凡&#xff0c;但如果从80岁倒着活&#xff0c;那么一半以上的人都可能不凡。 生活没有捷径&#xff0c;我们踩过的坑都成为了生活的经验&#xff0c;这些经验越早知道&#xff0c;你要走的弯路就会越少。 摘要: 随着信息领域的进步…

详解DFS(深度优先搜索)算法+模板+指数+排列+组合型枚举+带分数四道例题

目录 前言&#xff1a; 1.背景 2.图解分析 3.算法思想 4.dfs四大例题 4.1.递归实现指数型枚举 题解&#xff1a; 4.2.递归实现排列型枚举 题解&#xff1a; 字典序: 4.3.递归实现组合型枚举 题解: 4.4.带分数 题解&#xff1a; 5.最后&#xff1a; 前言&#xff1a;…

来了解一下ASN.1?

想要了解证书&#xff0c;必须先了解ASN.1和编码规则。这篇文章简单介绍ASN.1&#xff0c;不过分探讨细节&#xff0c;大家如果有兴趣可以继续深入研究。 一、ASN.1 ASN.1是Abstract Syntax Notation One&#xff08;抽象文法描述语言&#xff09;的缩写。计算机系统之间交换…

Android Studio 阅读 frameworks/base 下的代码

从网上搜的方案都是生成 android.ipr&#xff0c;但是这个需要整编&#xff0c;整编一次比较费时费劲&#xff0c;所以想了个巧招 首先用 Android Studio 打开 frameworks/base&#xff0c;其文件夹目录大概形如下&#xff1a; ├── Android.bp├── Android.mk├── api …