XML文件是什么,XML文件的基本用法(新手必看)
XML 的全称为 Extensible Markup Language,叫作可扩展标记语言。
XML 和前面学习的 HTML 很相似,都属于标记语言,不过两者的用途不同,HTML 主要用来显示页面数据,而 XML 则用来传输和存储数据。“可扩展”的字面意思指 XML 允许自定义格式,但是这不代表开发人员可以随便编写 XML 文件。

图 1 XML语法规范
如图 1 所示,在 XML 基本语法规范的基础上,第三方应用程序、框架会通过设计 XML 约束的方式强制规定配置文件的内容,规定之外的都是不允许的,因此编写 XML 文件不仅需要遵循 XML 基本语法,还要符合第三方应用程序或框架给定的 XML 约束。
XML 语言独立于计算机、操作系统和编程语言,凭借其简单、可扩展、交互性和灵活性在计算机行业得到了广泛应用和支持,例如最基本的网站、应用程序的配置信息,一般都采用 XML 文件来描述。
配置文件是给应用程序提供配置参数的文件,并且还可以初始化设置一些有特殊格式的文件。
常见的配置文件类型有 properties 文件、XML 文件、YAML 文件和 JSON 文件:
相信学过 Java 基础的读者,已经对 properties 文件有所了解,下面主要对比一下 properties 文件和 XML 文件,YAML 文件和 JSON 文件这里暂不涉及。
properties 文件的示例代码如下:
properties 文件是最简单的一种配置文件,编写过程中需要注意以下要求:
XML 文件的示例代码如下:
XML 文件形成了一种树结构,整体来看是由一个标记结点和一个根结点组成,它从“根部”开始,然后扩展到“枝叶”。标记结点指的是文档声明,它只能出现在 XML 文件最开始的地方,根结点则有且仅有一个,然后文件中所有的数据都会以某种形式存储到根结点的子结点中。
下面分别介绍 XML 文件的组成部分。
示例代码如下:
类似 HTML,所有元素均可拥有文本内容和属性,标签的用法也和 HTML 标签一样,分为开始标签和结束标签,标签中间写的是标签内容,标签内容可以是文本,也可以是其他子标签。如果标签没有任何内容,那么可以定义为单标签,如 <begin/>。
标签可以嵌套,但是不能交叉嵌套,必须保证父标签与子标签的逻辑关系。值得注意的是,一个 XML 文件只能有一个根标签。
另外,标签名必须符合标识符的命名规则,具体如下:
属性的定义格式如下所示:
一个元素可以有 0 个或多个属性,多个属性之间用空格隔开,但不能出现同名的属性。属性名也要符合标识符的命名规则。例如,前面 XML 文档声明示例中的 version 和 encoding 属性。
示例代码如下:
XML 对于上述字符提供两种转义方式,一种是通过预定义的实体引用表示,一种是采用“<![CDATA[…]]>”特殊标签,将包含特殊字符的字符串封装起来。
例如,标签由“<”和“>”组成,而对于大于号或小于号的使用,就可以借助实体引用。五个特殊字符对应的 XML 转义序列如下表所示。
例如,显示如下标签:<tcode></tcode>,标签内的文本内容为“<tcode>我喜欢写代码</tcode>”。
示例代码如下:
第二种方式是将特殊字符放到 CDATA 区,CDATA 内部的所有东西都会被 XML 解析器忽略,XML 解析器会将其当作文本原封不动地输出。当 XML 文件中需要编写一些不希望 XML 解析器进行解析的内容,例如,程序代码、SQL 语句或其他,就可以写在 CDATA 区中。
CDATA 区的定义格式如下所示:
XML 和前面学习的 HTML 很相似,都属于标记语言,不过两者的用途不同,HTML 主要用来显示页面数据,而 XML 则用来传输和存储数据。“可扩展”的字面意思指 XML 允许自定义格式,但是这不代表开发人员可以随便编写 XML 文件。

图 1 XML语法规范
如图 1 所示,在 XML 基本语法规范的基础上,第三方应用程序、框架会通过设计 XML 约束的方式强制规定配置文件的内容,规定之外的都是不允许的,因此编写 XML 文件不仅需要遵循 XML 基本语法,还要符合第三方应用程序或框架给定的 XML 约束。
XML 语言独立于计算机、操作系统和编程语言,凭借其简单、可扩展、交互性和灵活性在计算机行业得到了广泛应用和支持,例如最基本的网站、应用程序的配置信息,一般都采用 XML 文件来描述。
XML文件的应用
XML 作为独立于软件和硬件的信息传输工具,它可以存储数据、作为数据交换的载体,但最常见的还是作为配置文件使用,例如 JavaEE 框架、SSM 框架大部分都是使用 XML 作为配置文件。配置文件是给应用程序提供配置参数的文件,并且还可以初始化设置一些有特殊格式的文件。
常见的配置文件类型有 properties 文件、XML 文件、YAML 文件和 JSON 文件:
- properties 文件以“key-value”键值对的形式存在。例如,Druid 连接池就是使用 properties 文件作为配置文件;
- XML 文件主要是树形结构,相比 properties 文件更灵活一些。例如,Web 项目的核心配置文件就是使用 XML 文件作为配置文件;
- YAML 文件的层次结构由缩进程度来表示。例如,SpringBoot 就是使用 YAML 作为配置文件;
- JSON 文件中数组用“[]”表示,对象用“{}”表示,对象内部的属性依然使用键值对表示。通常用来做文件传输,也可以用来做前端或者移动端的配置文件。
相信学过 Java 基础的读者,已经对 properties 文件有所了解,下面主要对比一下 properties 文件和 XML 文件,YAML 文件和 JSON 文件这里暂不涉及。
properties 文件的示例代码如下:
atguigu.jdbc.url=jdbc:mysql://192.168.198.100:3306/dbname atguigu.jdbc.driver=com.mysql.cj.jdbc.Driver atguigu.jdbc.username=root atguigu.jdbc.password=atguigu
properties 文件是最简单的一种配置文件,编写过程中需要注意以下要求:
- 由键值对组成;
- 键和值之间的符号是等号;
- 每一行都必须顶格写,前面不能有空格等其他符号。
XML 文件的示例代码如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!-- 配置 SpringMVC 前端控制器 --> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 在初始化参数中指定 SpringMVC 配置文件的位置 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <!-- 设置当前 Servlet 创建对象的时机是在 Web 应用启动时 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <!-- url-pattern 配置斜杠表示匹配所有请求 --> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>通过上述代码可以看出,XML 文件格式与 properties 文件格式大不相同。properties 配置文件容易理解,但只能赋值,适合简单的属性配置。而 XML 配置文件结构清晰,可以有多种操作方式,更加灵活,但编写过程比较复杂。
XML基本语法
一个标准的 XML 文件一般由以下几部分组成,分别为文档声明、元素、属性、注释和特殊字符。XML 文件形成了一种树结构,整体来看是由一个标记结点和一个根结点组成,它从“根部”开始,然后扩展到“枝叶”。标记结点指的是文档声明,它只能出现在 XML 文件最开始的地方,根结点则有且仅有一个,然后文件中所有的数据都会以某种形式存储到根结点的子结点中。
下面分别介绍 XML 文件的组成部分。
1) 文档声明
XML文件的文档声明必须放在第一行,以“<?xml”开头,以“?>”结束,在 XML 文件的文档声明中,常见的两个属性为 version 和 encoding:- version 用来指定 XML 文件的版本,一般选择 1.0 版本,该属性是必须属性;
- encoding 用来指定 XML 文件的字符集,默认为 UTF-8,该属性是可选属性。
示例代码如下:
<?xml version="1.0" encoding="UTF-8"?>其中,version 表示版本号,encoding 表示字符集。对于 XML 文件,如果声明必须遵循上述格式,当然,也可以不声明。
2) 元素
元素是 XML 中最重要的组成部分,也叫作标签。类似 HTML,所有元素均可拥有文本内容和属性,标签的用法也和 HTML 标签一样,分为开始标签和结束标签,标签中间写的是标签内容,标签内容可以是文本,也可以是其他子标签。如果标签没有任何内容,那么可以定义为单标签,如 <begin/>。
标签可以嵌套,但是不能交叉嵌套,必须保证父标签与子标签的逻辑关系。值得注意的是,一个 XML 文件只能有一个根标签。
另外,标签名必须符合标识符的命名规则,具体如下:
- 标签名不能使用 XML、xMl、XmL 等类似的单词;
- 标签名不能使用空格、冒号等特殊符号;
- 标签名严格区分大小写,建议使用小写字母;
- 标签名可以包含字母、数字,以及其他字符,但不能以数字开头;
- 父标签与子标签不能重名。
3) 属性
属性是元素的一部分,它必须出现在元素的开始标签中,不能出现在结束标签中。属性的定义格式如下所示:
属性名="属性值"其中属性值不能为空,且必须使用单引号或双引号括起来。
一个元素可以有 0 个或多个属性,多个属性之间用空格隔开,但不能出现同名的属性。属性名也要符合标识符的命名规则。例如,前面 XML 文档声明示例中的 version 和 encoding 属性。
4) 注释
XML 文件的注释,以“<!--”开头,以“-->”结尾,注释不能写在 XML 文档声明前且不允许嵌套,并且支持多行注释。示例代码如下:
<!-- 注释的内容 -->
5) 特殊字符
XML 中共有 5 个特殊的字符,分别为“&”、“<”、“>”、“"”和“'”。如果配置文件中的值包括这些特殊字符,就需要进行特别处理。XML 对于上述字符提供两种转义方式,一种是通过预定义的实体引用表示,一种是采用“<![CDATA[…]]>”特殊标签,将包含特殊字符的字符串封装起来。
例如,标签由“<”和“>”组成,而对于大于号或小于号的使用,就可以借助实体引用。五个特殊字符对应的 XML 转义序列如下表所示。
符号 | 对应符号 | 实体引用 |
---|---|---|
小于 | < | < |
大于 | > | > |
单引号 | ' | ' |
双引号 | " | " |
和(and) | & | & |
例如,显示如下标签:<tcode></tcode>,标签内的文本内容为“<tcode>我喜欢写代码</tcode>”。
示例代码如下:
<tcode>我喜欢写代码</tcode>
第二种方式是将特殊字符放到 CDATA 区,CDATA 内部的所有东西都会被 XML 解析器忽略,XML 解析器会将其当作文本原封不动地输出。当 XML 文件中需要编写一些不希望 XML 解析器进行解析的内容,例如,程序代码、SQL 语句或其他,就可以写在 CDATA 区中。
CDATA 区的定义格式如下所示:
<![CDATA[文本数据]]>示例代码如下:
<![CDATA[ select * from employee where salary > 20 and salary < 100; ]]>