XML 配置文件 核心知识点总结(极简易懂版)
XML 是可扩展标记语言 ,专门用来做配置文件、数据传输、数据存储,是 Java、Spring、MyBatis、Maven 等框架最常用的配置格式。
下面是最核心、最实用的 XML 配置知识点,直接背会就能看懂 / 写所有项目配置。
一、XML 基础语法(必须遵守)
- 有且只有一个根节点
- 标签必须成对出现,区分大小写
- 标签必须正确嵌套,不能交叉
- 属性值必须用引号包裹(单 / 双引号都行)
- 空标签可以简写 :
<tag/> - 注释写法 :
<!-- 这是注释 --> - 特殊字符必须转义
&→&<→<>→>"→"'→'
二、XML 结构示例(标准配置文件)
xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 根节点 -->
<config>
<!-- 子节点 -->
<server>
<host>127.0.0.1</host>
<port>8080</port>
</server>
<!-- 带属性的节点 -->
<database id="mysql" url="jdbc:mysql://localhost:3306/test"/>
</config>
三、XML 三大核心组成
1. 声明(可选但推荐)
xml
<?xml version="1.0" encoding="UTF-8"?>
version:版本(固定 1.0)encoding:编码(UTF-8 最常用)
2. 元素(标签)
- 元素 = 开始标签 + 内容 + 结束标签
- 可以嵌套
- 命名规则:字母 / 数字 / 下划线,不能以数字开头
3. 属性
- 写在开始标签里
- 格式:
key="value" - 一个标签可以有多个属性
四、CDATA 区(解决大量特殊字符)
如果配置里有很多 < > & 等符号,不用一个个转义,直接放 CDATA:
xml
<sql>
<![CDATA[
SELECT * FROM user WHERE age < 18 AND id > 10
]]>
</sql>
- CDATA 里的内容原样解析,不会被 XML 识别为标签
- 常用于 SQL、JSON、脚本代码
五、命名空间(框架配置必备)
Spring、MyBatis 等框架必须用命名空间,用来区分标签属于哪个框架:
xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
xmlns:定义命名空间xsi:schemaLocation:指定约束文件(校验 XML 格式)
六、XML 约束(保证配置格式正确)
用来限制标签、属性能写什么、不能写什么,分两种:
1. DTD(简单老式)
xml
<!DOCTYPE config SYSTEM "config.dtd">
2. Schema(主流,.xsd 文件)
框架全部用 Schema,语法更严格、功能更强。
七、XML 与 properties 对比(面试常问)
表格
| 特点 | properties | XML |
|---|---|---|
| 结构 | 扁平 key=value | 树形结构,支持嵌套 |
| 复杂配置 | 不适合 | 非常适合 |
| 数据类型 | 纯字符串 | 可定义类型 |
| 约束校验 | 无 | 支持 DTD/Schema |
| 框架使用 | 简单配置 | 复杂配置(Spring/MyBatis) |
八、常见框架 XML 配置用途(快速对应)
- pom.xml:Maven 项目依赖管理
- web.xml:Java Web 项目核心配置
- spring.xml / applicationContext.xml:Spring 容器配置
- mybatis-config.xml:MyBatis 核心配置
- mapper.xml:MyBatis SQL 映射文件
九、XML 解析(程序读取配置)
Java 中常用解析方式:
- DOM:全量加载到内存(适合小配置文件)
- SAX:逐行读取(省内存)
- Dom4j:最常用第三方工具(简单高效)
- Jsoup:可解析 XML/HTML
总结(必背 6 条)
- XML 是配置文件 / 数据传输语言
- 必须有根节点、标签成对、大小写敏感
- 特殊字符用转义 或 CDATA
- 框架配置必须写命名空间
- 用 DTD/Schema 约束格式
- 解析常用 Dom4j