XML全称为可扩展标记语言,主要用于存储和传输数据,创建格式正确的XML文件需要严格遵循其编写规范,否则会导致解析器无法正常读取内容。规范的XML文件不仅能被各类程序正确解析,也便于后续维护和扩展。

XML文件的基础结构规范
一个格式正确的XML文件需要包含XML声明和根元素,所有其他内容都必须放在根元素内部。XML声明需要放在文件的第一行,用来指定XML的版本和编码格式。
XML声明要求
XML声明的基本格式为<?xml version="1.0" encoding="UTF-8"?>,其中version属性是必须的,目前主流版本为1.0,encoding属性指定文件的字符编码,常用UTF-8避免中文乱码问题。声明结尾的?和>必须正确闭合,且声明前面不能有任何其他内容,包括空格和空行。
根元素要求
XML文件必须有且仅有一个根元素,所有其他元素都是根元素的子元素。根元素的标签名可以自定义,只要符合XML标签的命名规则即可。
<?xml version="1.0" encoding="UTF-8"?>
<!-- 根元素为user_list -->
<user_list>
<user>
<name>张三</name>
<age>25</age>
</user>
</user_list>
XML标签与属性编写规范
标签命名规则
XML标签名需要遵循以下规则:
- 标签名可以包含字母、数字、下划线、连字符,但不能以数字或标点符号开头
- 标签名不能以xml(无论大小写)开头,这是XML的保留前缀
- 标签名区分大小写,
<User>和<user>是两个不同的标签 - 标签必须成对出现,有开始标签就必须有对应的结束标签,空标签可以用
<tag/>的简写形式
属性定义规则
XML元素的属性需要放在开始标签中,属性值必须用英文单引号或双引号包裹,同一个元素不能有同名的属性。属性的值不能包含未转义的特殊字符。
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book id="b001" category="编程">
<title>XML入门教程</title>
<price>59.9</price>
</book>
<book id='b002' category='文学'>
<title>散文精选</title>
<price>39.8</price>
</book>
</bookstore>
特殊字符与注释规范
特殊字符处理
XML中有五个预定义的特殊字符,如果需要在文本中使用这些字符,必须进行转义,或者使用CDATA区块包裹内容,CDATA区块内的内容会被解析器当作纯文本处理,不会解析其中的标签和特殊字符。
| 特殊字符 | 转义后形式 | 说明 |
|---|---|---|
| < | < | 小于号 |
| > | > | 大于号 |
| & | & | 和号 |
| ' | ' | 单引号 |
| " | " | 双引号 |
CDATA区块的语法为<![CDATA[ 内容 ]]>,示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<message>
<content><![CDATA[ 这段内容包含特殊字符: & "hello" ]]></content>
</message>
注释规范
XML注释的语法为<!-- 注释内容 -->,注释不能放在XML声明之前,也不能嵌套在其他注释内部,注释内容中不能出现--,否则会导致解析错误。
常见错误示例与修正
以下是几个常见的XML格式错误示例及修正方法:
错误1:标签未闭合
<?xml version="1.0" encoding="UTF-8"?>
<user>
<name>李四
</user>
修正后:
<?xml version="1.0" encoding="UTF-8"?>
<user>
<name>李四</name>
</user>
错误2:属性值未加引号
<book id=b003>XML进阶</book>
修正后:
<book id="b003">XML进阶</book>
错误3:多个根元素
<?xml version="1.0" encoding="UTF-8"?> <user>张三</user> <user>李四</user>
修正后:
<?xml version="1.0" encoding="UTF-8"?>
<user_list>
<user>张三</user>
<user>李四</user>
</user_list>
只要严格遵循以上XML编写规范,就能创建出格式正确、可被正常解析的XML文件,在数据传输和存储场景中避免不必要的格式错误问题。