当前位置: 首页 > news >正文

八、Java-XML

1. XML的引入

1.1 XML是什么?

XML指可扩展标记语言。

1.2 XML的作用是什么?

XML是不作为的,XML不会做任何事情。XML被设计用来结构化、存储以及传输信息。它仅仅是纯文本而已。它仅仅将信息包装在XML标签中。我们需要编写软件或者程序,才能传送、接收和显示出这个文档。

2. 定义XML

1. 必须有声明语句。

XML声明是XML文档的第一句,其格式如下:

<?xml version="1.0" encoding="utf-8"?>

2. XML文档有且只有一个根元素

良好格式的XML文档必须有一个根元素,就是紧接着声明后面建立的第一个元素,其他元素都是这个根元素的子元素,根元素完全包括文档中其他所有的元素。

3. 注意大小写

在XML文档中,大小写是有区别的。“A”和“a”是不同的标记。

4. 所有的标记必须有相应的结束标记

所有标记必须成对出现,有一个开始标记,就必须有一个结束标记,否则将被视为错误。

5. 属性值使用引号

所有属性值必须加引号(可以是单引号,也可以是双引号,建议使用双引号),否则将被视为错误。

6. XML中可以加入注释

注释格式:<!-- -->

3. 解析XML

DOM解析:需要使用工具dom4j

原理:

使用maven添加dom4j依赖:

       <dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1.1</version>
</dependency>

解析XML的代码:

public class Test {public static void main(String[] args) {try {//读取XML:// 1. 创建一个xml解析器对象:(就是一个流)SAXReader sr = new SAXReader();// 2. 读取XML 文件(替换为实际路径),返回Document对象出来:Document dom = sr.read(new File("students.xml"));System.out.println(dom);//这里就相当于将整个文档封装为Document对象  dom:students.xml// 3. 获取根元素:(根节点只有一个)Element studentsEle = document.getRootElement();// students根元素// 4. 获取根节点下的多个子节点:Iterator<Element> it1 = studentsEle.elementIterator();//对students根元素进行遍历for (Element student : students) {// 处理每个学生节点processStudent(student);}} catch (Exception e) {e.printStackTrace();}}private static void processStudent(Element student) {// 获取属性String id = student.attributeValue("id");// 获取子元素的文本内容String name = student.elementText("name");String age = student.elementText("age");// 获取嵌套元素中的所有课程Element coursesElement = student.element("courses");List<Element> courses = coursesElement.elements("course");String coursesText = courses.stream().map(Element::getText).reduce((a, b) -> a + ", " + b).orElse("");}
}
http://www.dtcms.com/a/389178.html

相关文章:

  • 计算机在医疗领域应用的独特技术问题分析
  • HTB Intentions writeup(SQL二次注入也是注入)
  • 第一章 预训练:让模型“博闻强识”
  • 【数组】求两个匀速运动质点的相交或最小距离
  • 新手向:Python爬虫原理详解,从零开始的网络数据采集指南
  • OKZOO进军HealthFi:承接AIoT,引领Health-to-Earn
  • Halcon 相机标定
  • 腾讯混元发布集成翻译模型Hunyuan-MT-Chimera-7B,已开放体验
  • mybatis-plus扩展
  • 从x.ai到VSCode:一个AI编程助手的意外之旅
  • SQLite vs MySQL:核心SQL语法差异全面解析
  • 【每日算法】两数相加 LeetCode
  • ActiveMQ底层原理与性能优化
  • Ceph IO流程分段上传(1)——InitMultipart
  • 大数据毕业设计选题推荐-基于大数据的农作物产量数据分析与可视化系统-Hadoop-Spark-数据可视化-BigData
  • 【回归之作】学校实训作业:Day04面向对象思想编程
  • Ubuntu20.04或者Ubuntu24.04 TypeC-连接屏幕不显示问题
  • 【SQLSERVER】SQL Server 表导出与导入
  • postgresql和mongodb谁的地位更高
  • RK3588+复旦微JFM7K325T工业控制解决方案
  • RabbitMQ全方位解析
  • 云望无人机图传原理,无人机图传方式哪种好
  • 无人机50公里遥控模块技术要点与难点
  • 【三维重建】Octree-GS:基于LOD的3DGS实时渲染(TPAMI2025)
  • 《深度拆解3D开放世界游戏中角色攀爬系统与地形碰撞网格动态适配的穿透卡顿复合故障》
  • 数据库mysql连接池:从原理到实践的全面解析
  • # 深入理解栈、栈帧与递归:从迭代与递归归并排序双视角解析
  • Django 完整项目开发:博客系统
  • FPGA部署视觉模型
  • 课后实验实验拓扑: