1.xml基本介绍

知识点

核心内容

重点

XML定义

可扩展标记语言,用于数据存储和传输

与HTML的区别(HTML用于展示,XML用于结构化数据

XML用途

1. 配置文件(Spring的beans.xml、Tomcat的server.xml);

2. 数据交换(早期替代方案,现多用JSON);

3. 小型数据库(如旧版QQ聊天记录存储)

配置文件场景(Spring/Maven/MyBatis) vs. 数据传输场景(JSON更主流)

XML技术解析

解析技术:DOM/SAX(老韩重点讲解DOM)

DOM解析(树形结构) vs. SAX解析(事件驱动)

XML现状

当前主要作用:配置文件(如Tomcat端口配置、Spring Bean管理)

与JSON的对比(XML更复杂,JSON更轻量)

XML层级关系

描述复杂数据关系(如《红楼梦》家族树)

嵌套标签的父子节点逻辑

XML配置文件示例

1. Tomcat的server.xml(端口配置);

2. Maven的pom.xml(依赖管理)

标签属性(如<Connector port="8080">)

2.xml快速入门

知识点

核心内容

重点

XML基础概念

XML是可扩展标记语言,标签可自定义(如<students>、<student>),与HTML预定义标签不同

根元素唯一性(如<students>为根节点,仅能有一个)

XML文档结构

包含声明(<?xml version="1.0" encoding="UTF-8"?>)、根元素、子元素层级(如<student>下嵌套<name>、<age>)

属性与子元素区别(如ID="100"是属性,<name>是子元素)

XML特性

可扩展性(可自由添加标签如<gender>)、层级化数据表示(类似DOM树结构)

与HTML对比(XML标签自定义,HTML标签固定)

XML语法规范

标签需正确闭合(如<name>Jack</name>),错误示例:未闭合标签会报错(start tag not closed)

编码声明重要性(encoding="UTF-8"避免乱码)

XML应用场景

存储结构化数据(如学生信息),支持跨平台数据交换

与JSON对比(XML更适合复杂层级数据)

3.xml语法(1)

知识点

核心内容

重点

XML文档声明

必须放在文件第一行,包含版本(如version="1.0")和编码(如utf-8)

声明格式严格性(不可随意放置

XML元素

标签及其内容(如<student>和</student>)

元素嵌套规则与闭合要求

XML属性

标签内的附加信息(如id="001")

属性值需用引号包裹(单/双引号均可)

XML注释

格式为<!-- 注释内容 -->,与HTML风格一致

注释不可嵌套

CDATA区

用于处理特殊字符(如<![CDATA[内容]]>)

4.xml语法(2)

知识点

核心内容

注意事项

示例演示

根元素规则

每个XML文档必须有且仅有一个根元素,需完全包含其他所有元素

多根元素会报错(multiple root elements)

错误示例:<emails>...</emails><students>...</students>

标签格式

开始标签与结束标签需成对出现;空标签可简写为<tag/>

交叉嵌套会导致语法错误(如<a><b></a></b>)

合法空标签:<city name="北京"/>

命名规则

- 区分大小写; - 禁止数字开头; - 禁止空格/冒号; - 可用下划线连接

Email与email视为不同标签;1job无效

合法命名:<book_name>三国演义</book_name>

术语等价性

标签(Tag)、元素(Element)、节点(Node)在XML中常指同一概念

不同场景下术语偏好不同(解析时多用“节点”)

示例:<student>可称标签/元素/节点

嵌套原则

子元素需合理嵌套在父元素内,禁止交叉嵌套

错误示例:<school><address></school></address>

正确嵌套:<school><address>...</address></school>

5.xml语法(3)

知识点

核心内容

重点

XML属性基本语法

属性与元素的关系、引号使用规则(双引号/单引号交替使用)

属性值引号嵌套规则(含单引号用双引号包裹,反之亦然)

属性命名规范

同一元素内属性名称必须唯一(区分大小写)

大小写敏感特性(ID与id视为不同属性)

属性值限制

禁止使用@符号、禁止重复定义同名属性

特殊字符处理(同时含单双引号需规避)

多属性应用

单个元素可包含多个不同属性(如id+class+sex)

属性与子元素区别(属性非子节点)

实际案例演示

student元素示例(id冲突演示、大小写区分验证)

复合引号场景处理(代码片段实操演示)

6.xml语法(4)

知识点

核心内容

重点

XML注释规则

注释不能嵌套,位置固定

嵌套会导致解析错误

CDATA节的作用

将内容强制识别为普通文本(避免XML解析引擎执行)

<![CDATA[...]]> 的语法结构

CDATA语法规则

尖括号+叹号+双层中括号包裹内容(<![CDATA[内容]]>)

禁止嵌套和包含]]>终止符

CDATA应用场景

存放含XML敏感字符的脚本/代码(如<script>标签)

与普通文本转义字符的对比

语法记忆技巧

类比注释结构(<!-- -->替换为中括号+CDATA)

中括号层数匹配易混淆

7.xml语法(5)

知识点

核心内容

重点

XML转义字符

使用转义形式显示特殊字符的原始样式(如 <→&lt;、>→&gt;、&→&amp;)

区分HTML与XML转义字符的异同

XML格式规范

声明语句、唯一根源素、大小写敏感、属性值引号、标记成对/空标记闭合、正确嵌套

根源素唯一性交叉嵌套报错

DOM解析应用

通过程序对XML文件进行增删改查(如修改年龄、删除节点)

遍历修改值与节点删除操作的代码实现

XML与HTML转义对比

两者均需转义特殊字符,但具体语法可能不同(如引号转义&quot;)

混淆XML/HTML转义符号的书写格式

8.xml解析技术介绍、

知识点

核心内容

重点

DOM破解技术

使用dom forge库解析XML/HTML文档,通过DOM树实现增删改查操作

dom forge与原生DOM、SAX解析技术的区别

XML解析原理

标记型文档(XML/HTML)被映射为DOM树结构,通过Java技术操作节点

DOM树的形成与节点层级关系

解析技术演进

早期JDK的DOM/SAX → jDOM → dom forge(主流)

技术迭代原因及适用场景对比

文档工具使用

本地文档路径:dom forge-1.6.1/docs/index.html(需浏览器打开)

版本兼容性(1.x与2.x差异)

核心类与方法

Element类提供addChild()、getText()等方法操作节点

方法调用时的IO流与OOP思想应用

安卓相关技术

Pool解析技术(仅限安卓开发,与Java无关)

与其他解析技术的横向对比

9.DOM4J介绍

知识点

核心内容

重点

DOM解析概念

DOM破解是一个简单灵活的开放源代码库,主要用于解析和处理XML文件

区分DOM解析与其他XML解析方式

DOM Forge特点

优秀且广泛使用的XML解析库,支持多种XML操作

新版旧版区别仅在于JDK适配

DOM Forge下载

官网提供多个版本下载(16/20/21等),下载后得到zip文件

版本选择不影响基本功能

文档学习能力

强调程序员应具备通过官方文档学习新技术的能力

文档学习与百度搜索的区别

Document对象获取方式

1. SAXReader解析XML文件;

2. 解析XML格式字符串;

3. 主动创建Document对象

三种方式的应用场景差异

XML文件操作

重点讲解查询操作,简要介绍增删改操作

查询操作的具体实现方式

实际应用场景

1. 解析现有XML文件;

2. 处理网络传输的XML数据;

3. 动态生成XML文件

不同场景下的技术选择

技术重要性

强调XML解析技术仍具实用价值,是完整知识体系的一部分

新技术环境下传统技术的定位

10.加载xml文件

知识点

核心内容

重点

DOM4J解析XML文件

使用SAXReader加载XML文件,生成Document对象,分析其底层结构(根元素rootElement、子节点content与elementData数组)

换行符被解析为文本节点(导致elementData数组长度与实际元素数量不一致)

XML文档结构解析

Document→rootElement→content→elementData层级嵌套,通过element逐层获取子节点(如name、age)

属性与文本值的存储位置(如student节点的id属性与name节点的文本值小龙女)

Debug技巧

通过断点调试观察Document对象成员属性(如DefaultDocument类实例、rootElement的content数组)

节点类型混淆(元素节点Element vs 文本节点Text)

XML节点遍历逻辑

从根元素递归遍历子节点,过滤无效文本节点(如换行符\n),定位目标元素(如student下的name)

数组索引与实际元素对应关系(如elementData[1]对应第一个有效student节点)

11.遍历xml指定元素

知识点

核心内容

重点

XML遍历方法

通过document.getRootElement()获取根节点,再使用elements("student")提取学生列表,循环处理子节点数据

区分element()与elements()方法的使用场景(单节点 vs 多节点)

节点数据提取

逐层获取子节点(如student.element("name")),通过getText()读取文本内容

注意处理空节点或异常格式,避免NullPointerException

代码调试技巧

通过断点分析content结构,验证节点层级与数据位置(如name节点下content存储实际值)

理解XML解析中隐式节点(如换行符\n)的影响

OOP编程思维

强调“方法必然存在”的面向对象设计原则(如rootElement提供标准API)

泛型List<Element>的类型安全使用

学生信息输出

拼接name、age、gender等字段,格式化展示(换行/空格分隔)

多字段处理时注意数据对齐与可读性

12.指定读取xml元素

知识点

核心内容

重点

XML文件指定读取

通过索引直接获取特定节点(如elements.get(0))

强制类型转换(Object转Element)

元素属性获取

使用attributeValue()方法直接读取唯一属性

属性名必须与XML标签完全一致

多层级数据提取

通过element().element()链式调用获取嵌套数据

resume字段漏写getText()导致输出异常

XPath技术

支持直接从根节点定位深层元素(未展开讲解)

与DOM4J组合使用可实现精准定位

异常处理机制

方法声明处使用throws统一处理异常

未展示具体异常捕获逻辑

对象类型验证

通过接口实现关系确认强制转换安全性(Element接口)

需明确运行时类型匹配

13.DOM4J增删改操作

知识点

核心内容

重点

XML节点读取

通过DOM解析获取指定学生信息

节点索引从0开始计数

XML节点添加

创建新节点并挂载到根节点

必须通过父节点添加子节点

XML节点删除

通过父节点移除指定子节点

不能直接删除自身节点

XML节点修改

遍历节点并更新属性值

字符串与数值类型转换问题

DOM操作原理

内存修改需通过IO流持久化

内存操作与文件同步机制

Java IO流应用

使用FileOutputStream写入XML

字节流与字符流区别

节点层级关系

parent-child节点操作逻辑

多级节点访问路径

14.DOM4J练习

根据XML文件中book元素的数量创建对应数量的Book对象

知识点

核心内容

重点

XML文件解析与对象映射

根据books.xml文件创建对应的Book对象,动态解析节点数量与属性

节点遍历逻辑 vs 对象属性映射

面向对象编程实践

定义Book类(含书名、作者、价格等字段),通过XML数据实例化对象

类属性与XML标签的命名一致性

集合框架应用

可选将生成的Book对象存入集合(如List<Book>)

集合类型选择(ArrayList/LinkedList)

实现步骤

1. 遍历XML的book元素;

2. 提取元素信息;

3. 创建Book对象

动态节点数量处理

15.DOM4J练习实现

知识点

核心内容

重点

XML文件解析(DOM方式)

通过Document.getElementsByTagName("book")遍历所有<book>元素,提取子节点(书名、作者、价格)及属性(ID)

需注意:

1. 节点名称需与XML标签严格匹配

2. 字符串到数值的转换(Integer.parseInt()/Double.parseDouble())

XML文件结构

示例:

xml<br><book id="100"><br> <name>西游记</name><br> <author>吴承恩</author><br> <price>80</price><br></book>

易忽略:

1. 根节点与嵌套层级

2. 属性与子元素的区别(attributeValue("id") vs elementText("name"))

Java对象映射

将XML数据转为Book对象:

- 定义包含id(Integer)、name(String)、price(Double)的类

- 通过setter方法赋值

关键操作:

1. 类型转换异常处理

2. toString()重写用于调试输出

DOM树底层结构

强调文档对象模型(树形结构):

- 根节点→子节点→属性/文本节点

- 斜杠路径表示层级关系

重点:

DOM树的增删改查逻辑均基于节点层级关系

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【系统架构设计(27)】信息安全技术集成

文章目录一、本文知识覆盖范围二、信息安全基础要素详解1、机密性保障技术2、完整性验证技术3、可用性保障技术4、可控性管理技术5、可审查性追溯技术三、网络安全威胁与防护策略1、非授权访问防护2、拒绝服务攻击防护3、恶意软件传播防护四、加密技术体系与应用1、对称加密技术…

什么是 SaaS 安全?

什么是 SaaS 安全&#xff1f; SaaS 安全专注于保护云中的数据、应用程序和用户身份。它旨在应对基于云的软件所面临的挑战&#xff0c;以确保信息的安全性和可用性。SaaS 安全致力于降低未授权访问、数据泄露等风险&#xff0c;同时增强 SaaS 应用程序的安全性。 SaaS 安全不仅…

mysql和postgresql如何选择

h5打开以查看 简单来说&#xff1a; MySQL&#xff1a;更像是一个“快速、可靠的工匠”&#xff0c;注重速度、简单和稳定性&#xff0c;尤其在读操作密集的Web应用中是经典选择。 PostgreSQL&#xff1a;更像是一个“功能强大的学者”&#xff0c;追求功能的完备性、标准的符…

Redis最佳实践——安全与稳定性保障之数据持久化详解

Redis 在电商应用的安全与稳定性保障之数据持久化全面详解一、持久化机制深度解析 1. 持久化策略矩阵策略触发方式数据完整性恢复速度适用场景RDB定时快照分钟级快容灾备份/快速恢复AOF实时追加日志秒级慢金融交易/订单关键操作混合模式RDBAOF同时启用秒级中等高安全要求场景无…

Data Augmentation数据增强

目录 数据增强是什么 为什么数据增强 数组增强分类 有监督数据增强 无监督数据增强 数据增强是什么 数据增强又称数据扩增&#xff0c;是一种通过应用合理且随机的变换&#xff08;例如图像位移、旋转&#xff09;来增加训练集多样性的技术。让有限的数据产生等价于更多数…

OpenCV:特征提取

目录 一、特征提取核心概念&#xff1a;什么是图像特征&#xff1f; 二、实战 1&#xff1a;Harris 角点检测 1.1 角点的物理意义 1.2 Harris 算法原理 1.3 OpenCV 实战代码与解析 1.4 结果分析 三、实战 2&#xff1a;SIFT 特征提取 3.1 SIFT 算法核心优势 3.2 SIFT…

MySQL的查找加速器——索引

文章目录 目录 前言 一、基础概念&#xff1a;什么是 MySQL 索引&#xff1f; 二、底层数据结构&#xff1a;为什么 InnoDB 偏爱 B 树&#xff1f; B 树的结构特点&#xff08;以短链接表short_link的short_code索引为例&#xff09;&#xff1a; B 树的优势&#xff1a…

【Vue2手录11】Vue脚手架(@vue_cli)详解(环境搭建+项目开发示例)

一、前言&#xff1a;为什么需要 Vue 脚手架&#xff1f; 手动搭建 Vue 项目存在诸多痛点&#xff08;原笔记提及&#xff09;&#xff1a; 依赖管理复杂&#xff1a;需手动下载 Vue、Babel、Webpack 等工具&#xff0c;处理版本兼容性。配置繁琐&#xff1a;Webpack 配置、E…

自签发、CA机构签发、SSH、SCP、RSYNC,SUDO详解

一、为什么&#xff1f; 1. 自建CA为什么比Lets Encrypt强&#xff1f; 不能把CA放公网&#xff01;Lets Encrypt是给公网服务用的&#xff08;比如10.0.0.30的Web服务&#xff09;&#xff0c;但内网服务&#xff08;比如OpenVPN&#xff09;必须用自签CA。 CA私钥必须物理隔…

【Python】Python解决阿里云DataWorks导出数据1万条限制的问题

【Python】Python解决阿里云DataWorks导出数据1万条限制的问题一、前言二、脚本功能概述三、核心代码解析**1. 环境配置与安全设置****2. 用户配置区****3. 数据清洗函数****4. 核心逻辑**四、完整代码演示五、总结一、前言 在日常数据分析工作中&#xff0c;团队经常需要从阿…

计算机网络(一)基础概念

本篇文章为计算机网络相关知识点整理及扩展 基于B站计算机网络课程&#xff1a;https://www.bilibili.com/video/BV1p69tYZEvN/?spm_id_from333.1007.top_right_bar_window_history.content.click 如有错误&#xff0c;还望大家不吝指正 URL&#xff08;统一资源定位符&…

Git的工作区域和文件结构

Git的工作区域和文件结构 1. Git的工作区域2. Git的文件结构 打开.git文件&#xff0c;.git的文件结构如下&#xff1a; objects 存放已经提交的文件&#xff0c;也就是使用 git commit 进行操作后的文件。 index 存放已暂存的文件&#xff0c;也就是使用了 git add 进行操作后…

前端开发易错易忽略的 HTML 的 lang 属性

前言本文主要记录&#xff1a;前端开发中&#xff0c;一个本人错了好几年&#xff0c;看似无关紧要的小错误&#xff1a;HTML 的 lang 属性设置。正文HTML 的 lang 属性在HTML中&#xff0c;lang属性用于指定文档的语言。这对于搜索引擎优化&#xff08;SEO&#xff09;、屏幕阅…

【GD32】 GPIO 超详细总结 (江科大风格课件版)

GD32 GPIO 超详细总结 (江科大风格课件版)第一部分&#xff1a;GPIO 是什么&#xff1f; 名称&#xff1a;GPIO General Purpose Input/Output (通用输入输出口)作用&#xff1a;MCU与外部世界交互的桥梁。通过程序控制引脚输出高、低电平&#xff0c;或者读取引脚的电平状态。…

《嵌入式硬件(八):基于IMX6ULL的点灯操作》

一、IMX6ULL启动代码.global _start_start:ldr pc, _reset_handlerldr pc, _undefine_handlerldr pc, _svc_handlerldr pc, _prefetch_abort_handlerldr pc, _data_abort_handlerldr pc, _reserved_handlerldr pc, _irq_handlerldr pc, _fiq_handler_undefine_handler:ldr pc, …

Spring Boot 调度任务在分布式环境下的坑:任务重复执行与一致性保证

前言在实际业务开发中&#xff0c;调度任务&#xff08;Scheduled Task&#xff09; 扮演着重要角色&#xff0c;例如&#xff1a;定时同步第三方数据&#xff1b;定时清理过期缓存或日志&#xff1b;定时发送消息或报告。Spring Boot 提供了非常方便的 Scheduled 注解&#xf…

剖析ReAct:当大模型学会“边想边做”,智能体的进化之路

你是否曾惊叹于大语言模型&#xff08;LLM&#xff09;强大的推理能力&#xff0c;却又对其“纸上谈兵”、无法真正与世界交互而感到遗憾&#xff1f;你是否好奇&#xff0c;如何让AI不仅能“说”&#xff0c;更能“做”&#xff0c;并且在做的过程中不断思考和调整&#xff1f…

小型无人机传感器仿真模型MATLAB实现方案

一、系统架构设计 无人机传感器仿真模型需集成多物理场建模与数据融合模块&#xff0c;典型架构包含&#xff1a; 动力学模型&#xff1a;六自由度刚体运动方程传感器模型&#xff1a;IMU/GNSS/视觉/气压计数学建模数据融合层&#xff1a;卡尔曼滤波/EKF算法实现环境交互模块&a…

hadoop集群

ssh-keygen -t rsassh-copyid 用户名远程服务器地址start-dfs.sh chown [选项] 新所有者[:新所属组] 目标文件/目录常用选项&#xff1a;-R&#xff1a;递归修改目录下所有文件和子目录的所有者&#xff08;处理目录时常用&#xff09;-v&#xff1a;显示修改过程的详细信息-c&…

大模型入门实践指南

大模型入门教程:从概念到实践 大模型(Large Language Model, LLM)是当前人工智能领域的核心技术,其本质是通过大规模数据训练、具备复杂语言理解与生成能力的深度学习模型。本教程将从基础概念出发,带你理解大模型的核心逻辑,并通过可直接跑通的代码示例,快速上手大模型…