XML 基础
XML(可扩展标记语言),和HTML一样是标记语言,核心都是标签,但用途不同——HTML负责展示数据,XML专注于存储和传输数据,是JavaWeb开发中配置文件的核心(如Tomcat、框架的配置文件)。生活化举例:HTML像手机朋友圈(展示照片、文字给别人看),XML就像手机备忘录(记录待办、地址等信息,不对外展示,却能帮我们理清事项)。
XML的“可扩展”不是随意编写,需遵循基本语法,同时第三方应用(如Tomcat)会通过XML约束,规定配置文件的写法。我们无需从零编写XML,大多是在已有配置文件基础上,按语法和约束修改即可。
生活化举例:如果把HTML比作超市的商品货架(负责把商品展示给顾客),那么XML就像是超市的库存台账(负责记录商品的名称、数量、规格等核心信息,不对外展示,但却是运营的核心)。
核心说明
可扩展性:XML允许自定义标签,但这并不意味着可以随意编写。它必须遵循XML基本语法,同时第三方应用程序(如Tomcat、Spring框架)会通过“XML约束”,强制规定配置文件中能写什么、怎么写。
学习定位:我们无需从零编写XML文档,大多是在框架、服务器已提供的XML配置文件基础上修改。修改的内容取决于业务需求,而修改的规范则取决于XML基本语法和具体的XML约束。
1 常见配置文件类型(JavaWeb场景)
在JavaWeb开发中,不同场景会使用不同格式的配置文件,各有优势,核心常用类型如下:
properties文件:格式简单,仅用于存储键值对,适合简单的配置场景(如数据库连接信息)。例如druid连接池、MySQL的配置文件均采用此格式。
XML文件:结构严谨、可扩展性强,支持复杂的层级关系,是JavaWeb早期最核心的配置格式(如Tomcat的server.xml、web.xml)。
YAML文件:语法简洁、可读性强,层级清晰,是SpringBoot等现代框架的首选配置格式。
JSON文件:主要用于前后端数据传输,也可用于前端、移动端的简单配置,格式紧凑、解析高效。
1.1 properties配置文件(对比参考)
为了更好区分配置文件类型,先简单了解properties文件,便于对比XML的优势:
示例(数据库连接配置):
atguigu.jdbc.url=jdbc:mysql://localhost:3306/atguigu
atguigu.jdbc.driver=com.mysql.cj.jdbc.Driver
atguigu.jdbc.username=root
atguigu.jdbc.password=root
语法规范:
由“键=值”对组成,键和值之间用等号分隔;
每一行必须顶格写,前面不能有空格、制表符等多余符号;
不支持层级关系,仅能存储简单的键值对,无法描述复杂结构。
1.2 XML配置文件(核心重点)
XML文件支持层级结构,能清晰描述复杂数据关系,是Tomcat等JavaWeb组件的核心配置格式,我们重点掌握其语法和约束。
基础示例1(存储学生信息,简单层级):
<?xml version="1.0" encoding="UTF-8"?>
<students> <!-- 根标签:有且只能有一个 -->
<student> <!-- 子标签:可嵌套 -->
<name>张三</name> <!-- 双标签:成对出现 -->
<age>18</age>
<gender>男</gender>
</student>
<student>
<name>李四</name>
<age>20</age>
<gender>女</gender>
</student>
</students>
基础示例2(Tomcat相关XML,贴合实际场景,满足“再来一个xml”需求):
以下是Tomcat中tomcat-users.xml的简化示例,用于配置Tomcat后台管理用户,体现XML在JavaWeb中的实际应用:
<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<!-- 配置角色:相当于“岗位”,定义权限范围 -->
<role rolename="admin-gui"/> <!-- 管理员页面访问权限 -->
<role rolename="manager-gui"/> <!-- 应用管理页面访问权限 -->
<!-- 配置用户:关联角色,相当于“员工”,拥有对应岗位的权限 -->
<user username="admin"
password="admin"
roles="admin-gui,manager-gui"/>
</tomcat-users>
XML基本语法(必掌握)
XML的基本语法和HTML高度相似,但要求更严格,核心规则如下:
文档声明:必须放在XML文档的第一行、第一列,固定格式(编码可根据需求修改,常用UTF-8),用于声明XML的版本和编码。
<?xml version="1.0" encoding="UTF-8"?>根标签:整个XML文档有且只能有一个根标签,所有其他标签都必须嵌套在根标签内部(类似Tomcat的根目录,所有文件都在根目录下)。
-
标签关闭:
双标签:必须成对出现,有开始标签就必须有结束标签(如<name>张三</name>),不能遗漏结束标签;
单标签:无需嵌套内容,需在标签内自行关闭(如 、<context path="/app"/>)。
标签嵌套:标签可以嵌套,但不能交叉嵌套(错误示例:<b></b>,正确示例:<b></b>)。
注释:注释格式为,注释不能嵌套,也不能放在文档声明之前。
标签与属性:
- 标签名、属性名建议使用小写字母(规范约定,便于区分和维护);
- 属性必须有值,且值必须加引号(单引号、双引号均可,建议统一使用双引号);
- 一个标签可以有多个属性,但属性名不能重复(如<user username="admin" password="admin