XML 完整知识点文档
Extensible Markup Language,可扩展标记语言。
#XML
XML 完整知识点文档(结构化笔记版)
一、XML 基础概念
1. 全称
Extensible Markup Language,可扩展标记语言。
2. 核心定位
- 用来存储数据、传输数据、做配置文件
- 自定义标签,不预定义标签,可自己造标签
- 纯文本格式,跨平台、跨语言通用
- 重点:描述数据结构,不负责页面展示
3. 核心特点
- 可扩展性:标签自己定义,不受限制
- 跨平台:Windows / Linux / Mac / 编程语言都能解析
- 结构化:层级嵌套,格式严谨
- 纯文本:可用记事本、Vim、Nvim 直接编辑
二、XML 与 HTML 本质区别
表格
| 对比项 | HTML | XML |
|---|---|---|
| 用途 | 页面展示数据 | 存储 / 传输数据、配置 |
| 标签 | 预定义好,不能自定义 | 完全自定义标签 |
| 语法 | 语法松散,容错高 | 语法极其严格,错一点就报错 |
| 大小写 | 不敏感 | 严格大小写敏感 |
| 作用 | 给人看的界面 | 给程序、系统读取的结构化数据 |
三、XML 强制语法规则(必记)
- 必须有且只有一个根标签
- 标签大小写敏感
<User>和<user>是两个标签 - 所有标签必须闭合:开始标签 + 结束标签
- 标签必须正确嵌套,不能交叉嵌套
- 属性值必须用单引号 / 双引号包裹
- 特殊符号必须转义,不能直接写
- 换行、空格会被保留,格式敏感
四、XML 文档结构组成
- XML 声明(文档第一行)
xml
<?xml version="1.0" encoding="UTF-8"?>
- version:版本,固定 1.0
- encoding:编码,一般 UTF-8
根元素
整个文档最外层唯一的大标签
子元素 / 标签
层级嵌套的自定义标签
属性
写在开始标签里,
属性名="值"文本内容
标签中间的文字数据
注释
xml
<!-- 这是XML注释 -->
五、XML 转义特殊字符
XML 里 < > & " ' 不能直接写,必须转义:
表格
| 原符号 | 转义字符 |
|---|---|
| < | < |
| > | > |
| & | & |
| " | " |
| ' | ' |
六、CDATA 区段
作用
里面的内容原样保留,不用转义,适合放代码、特殊符号、脚本。
语法
xml
<![CDATA[
这里可以写任意符号 < > & 不用转义
随便写代码、文本
]]>
七、XML 约束(规范格式)
用来规定 XML 标签怎么写、有哪些标签、属性是什么,防止乱写。
1. DTD 文档类型定义
- 早期约束方式
- 规定标签结构、子标签数量、属性
- 不支持数据类型校验
2. XSD(XML Schema)
- 现在主流
- 比 DTD 强大
- 支持数据类型(数字、字符串、日期)
- 支持命名空间,企业项目常用
八、XML 解析方式
程序读取 XML 只有两种主流方式:
- DOM 解析
- 把整个 XML 加载到内存,形成树形结构
- 可以增、删、改、查标签
- 缺点:大文件占内存高
- SAX 解析
- 逐行读取,事件驱动
- 不把整个文档载入内存
- 适合超大 XML 文件,只能读不能改
九、XML 实际应用场景(重点)
软件配置文件
很多 Linux 程序、Java 项目、Maven、Spring、框架配置都用 XML
前端 / 后端数据传输 老式接口常用
桌面 / 软件界面布局 KDE、安卓、Qt 界面布局大量用 XML
结构化数据存储 代替简单数据库存配置、列表
文档、报表、格式描述
十、完整 XML 示例(可直接保存运行)
xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 用户信息XML示例 -->
<users>
<user id="1">
<name>张三</name>
<age>22</age>
<info><![CDATA[爱好 <编程> & Linux 折腾]]></info>
</user>
<user id="2">
<name>李四</name>
<age>23</age>
</user>
</users>
十一、知识点定位
和你之前 man 命令学习文档 一样,这篇可以独立作为一份技术笔记;
后续学 Java 配置、框架配置、Linux 部分软件配置、KDE 桌面配置,都会用到 XML 语法规则。
需要我把它精简成「面试必背极简版」吗?