XML空元素指的是不包含任何子元素和文本内容的元素,在XML文档中有明确的语法规范要求,开发者需要按照规则正确书写,才能保证XML文档的合法性。

XML空元素的两种标准语法形式
XML规范中定义了两种空元素的合法书写方式,两种方式的效果完全一致,开发者可以根据使用习惯选择。
第一种:完整开闭标签形式
和普通元素的结构类似,只是开标签和闭标签之间没有内容,示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<emptyElement></emptyElement>
<userInfo id="1"></userInfo>
</root>
第二种:自闭合标签形式
使用<标签名/>的形式直接表示空元素,是更简洁的写法,也是实际开发中最常用的形式,示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<emptyElement/>
<userInfo id="1"/>
</root>
空元素的命名和属性规范
空元素的命名规则和普通XML元素完全一致,需要遵循以下要求:
- 标签名只能以字母或下划线开头,不能以数字或标点符号开头
- 标签名不能包含空格、冒号等特殊字符,只能包含字母、数字、下划线、连字符
- 标签名区分大小写,<Empty/>和<empty/>是两个不同的元素
空元素可以包含属性,属性需要写在开标签或者自闭合标签的内部,多个属性之间用空格分隔,属性值必须用英文双引号包裹,示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<!-- 包含多个属性的空元素 -->
<timeout value="30" unit="second"/>
<maxConnection count="100" retry="3"/>
</config>
空元素和包含空白内容的元素的区别
很多开发者容易混淆空元素和包含空白内容的元素,两者的语法和语义完全不同:
| 类型 | 语法示例 | 说明 |
|---|---|---|
| 空元素 | <element/> 或 <element></element> | 完全不包含任何内容,包括空白字符 |
| 包含空白内容的元素 | <element> </element> | 标签之间包含空格、换行等空白字符,属于有内容的元素 |
如果XML解析器开启了严格模式,包含空白内容的元素不会被判定为空元素,因此如果需要表示空元素,不要在其中添加任何空白字符。
空元素的常见使用场景
空元素通常用于表示不需要额外内容描述的配置项、标记类节点等场景,例如:
- 配置文件中的开关项,比如<enableCache/>表示开启缓存
- 数据交换中表示不存在的可选字段,比如用户没有填写邮箱时,返回<email/>
- XML schema中定义空类型元素的实例
只要按照上述语法规范书写XML空元素,就能保证生成的XML文档符合标准,被各类XML解析器正确识别和处理。