下面给你整理一篇系统、实战型的指南,详细讲解
👉 XML 文档结构与声明(Declaration) 的用法、规则与示例,适合学习、复习或面试使用。
XML 中的文档与声明用法详解
XML(可扩展标记语言)是一种用于存储和传输数据的文本格式,强调自我描述性和结构化。
理解 文档结构和声明 是掌握 XML 的关键。
一、XML 文档的基本结构
一个完整的 XML 文档一般包含三个部分:
- XML 声明(可选)
- 文档类型声明(可选)
- 根元素 + 子元素(必须)
1️⃣ XML 声明
XML 声明通常写在文档第一行:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
组成部分:
| 属性 | 说明 | 示例 |
|---|---|---|
| version | XML 版本,必须 | "1.0" |
| encoding | 文档字符编码,可选,默认 UTF-8 | "UTF-8" 或 "ISO-8859-1" |
| standalone | 表示是否依赖外部 DTD,可选 | "yes" / "no" |
作用:
- 告诉解析器 XML 版本
- 指定字符编码,避免乱码
- 指明是否依赖外部 DTD 文件
示例:
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>张三</to>
<from>李四</from>
<message>你好,XML!</message>
</note>
注意:
<?xml ... ?>必须是文档第一行,否则解析器可能报错。
2️⃣ 文档类型声明(DOCTYPE,可选)
用于指定文档所遵循的 DTD(Document Type Definition):
<!DOCTYPE note SYSTEM "note.dtd">
作用:
- 指明 XML 文档结构的约束
- 帮助解析器验证元素和属性合法性
- 可以引用外部 DTD 文件,也可以内部定义
示例(内部 DTD):
<!DOCTYPE note [
<!ELEMENT note (to,from,message)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT message (#PCDATA)>
]>
<note>
<to>张三</to>
<from>李四</from>
<message>内部 DTD 验证</message>
</note>
二、XML 根元素(必选)
- 每个 XML 文档必须有且仅有一个根元素
- 所有子元素必须嵌套在根元素内部
示例:
<library>
<book>
<title>XML 实战指南</title>
<author>阿杰</author>
</book>
</library>
三、XML 文档声明规则总结
- XML 声明是可选的,但推荐写,尤其是多语言环境
- 必须在文档第一行
- version 必填,encoding、standalone 可选
- 文档类型声明 可选,但用于验证时很有用
- 根元素是必须的,整个文档内容必须包含在根元素内
四、编码注意事项
- XML 默认 UTF-8,如果声明不一致容易出现乱码
- 常用编码:
| 编码 | 说明 |
|---|---|
| UTF-8 | 推荐,支持多语言 |
| ISO-8859-1 | 西欧语言 |
| GB2312 / GBK | 中文兼容 |
示例:
<?xml version="1.0" encoding="GBK"?>
<note>
<to>张三</to>
</note>
五、完整示例
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE library [
<!ELEMENT library (book+)>
<!ELEMENT book (title, author)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
]>
<library>
<book>
<title>XML 入门</title>
<author>阿杰</author>
</book>
<book>
<title>XML 高级应用</title>
<author>李四</author>
</book>
</library>
六、总结
- XML 声明:定义版本、编码、是否依赖外部 DTD
- 文档类型声明(DOCTYPE):约束 XML 结构,可选
- 根元素:XML 文档必需,所有内容都包含在其中
- 规范写法:保证解析器解析正确、防止乱码
- 实战经验:尽量声明 UTF-8 编码,必要时使用 DTD 或 XSD 约束文档
发表回复