为什么需要文本格式?
文本格式便于存储信息,因为它们可以由程序和人类创建和处理。
文本文件(文本格式的文件)可以在各种文本编辑器中打开、阅读和编辑。
许多程序使用基于文本的配置文件,即使格式包含数字和二进制(是/否)值。
由于需要从文本格式转换为内部格式,反之亦然,这使得程序稍微复杂一些,但它可以在不使用程序本身的配置工具的情况下手动编辑配置。
现在在哪里使用 XML?
XML 用于 IT 的各个领域。它可以是配置文件(带有程序设置)或用于在程序之间传输数据的文件。在 Java 中,最常见的用例之一是配置 Maven,一种构建自动化工具。
XML 文档的结构
XML 文档的物理和逻辑结构是分开的。就物理结构而言,文档由可以引用其他实体的实体组成。
唯一的根元素是文档实体。实体是文档中最小的部分。所有实体都有一个名称并包含字符。
反过来,字符属于两个类别之一:字符数据或标记。
标记包括:
- 标记,表示元素边界;
- 声明和处理指令,包括它们的属性;
- 实体引用;
- 评论;
- 字符序列包装 CDATA 部分。
从逻辑上讲,文档由元素、注释、声明、实体引用和处理指令组成。标记用于在文档中创建所有这些结构。
文档的所有组成部分都分为序言和根元素。根元素是 XML 文档的强制性基本部分,而序言可能根本不存在。根元素可以由嵌套元素、字符数据和注释组成。文档的元素必须正确嵌套:任何在另一个元素内开始的元素也必须在该元素内结束。
标记符号
标记总是以<开头并以>结尾。
<和>(尖括号)和& (与号)符号起着特殊的作用。尖括号表示元素、处理指令和一些其他序列的边界。符号帮助我们用实体替换文本。
声明
XML 声明指定用于编写文档的语言版本。XML 规范要求以 XML 声明开始文档,因为文档内容的正确解释取决于语言的版本。
在该语言的第一个版本 (1.0) 中,此声明是可选的,但在以后的版本中是强制性的。假定缺少声明表示版本 1.0。声明还可能包含有关文档编码的信息。
例子:
标签
标签是包含元素名称的标记结构。有开始标签和结束标签。还有结合开始和结束元素的空元素标签。
例子:
-
开始标签:<tag1>
-
结束标签:</tag1>
-
空元素标签:<empty_tag1 />
属性
XML 元素的另一部分是属性。一个元素可以有多个唯一的属性。属性让我们指定有关元素的更多信息。或者更准确地说,属性定义了元素的特性。
属性始终是名称-值对:
标签中的属性示例:
属性的值必须用双引号 ( " ) 或单引号 ( ' ) 括起来。属性仅用于开始标记和空元素标记。
转义五个特殊字符(<、>、'、"、&)
显然,不能在字符数据和属性值中使用<、>和&符号。您需要特殊的转义序列来表示它们。在属性值内写撇号和引号时也使用特殊序列:
象征 | 替代品 |
---|---|
< | < |
> | > |
& | & |
' | ’ |
“ | “ |
此外,要编写\字符,您需要使用\\。
CDATA 部分
CDATA 部分不是文本的逻辑单元。这种类型的部分可以出现在 XML 语法允许我们在文档中放置字符数据的地方。
该部分以<![CDATA[开始并以]]>结束。字符数据放置在这些标记位之间,并且可以直接使用<、>和&符号。
评论
注释不被视为字符数据。注释以<!--开头,以-->结尾。字符序列--不能在注释中使用。此外,在注释中,与号字符不表示标记。
例子:
名称
在 XML 中,所有名称只能包含 Unicode 字符表中的字母、阿拉伯数字、句点、冒号、连字符和下划线。名称可以以字母、冒号或下划线开头。请注意,名称不能以字符串XML开头。
例子
让我们看一下 Java 类和该类的对象。然后我们将尝试序列化 XML 格式的对象。班级代码:
public class Book {
private String title;
private String author;
private Integer pageCount;
private List<String> chapters;
public Book(String title, String author, Integer pageCount, List<String> chapters) {
this.title = title;
this.author = author;
this.pageCount = pageCount;
this.chapters = chapters;
}
// Getters/setters
}
和创建对象:
Book book = new Book("My Favorite Book", "Amigo", 999, Arrays.asList("Chapter 1", "Chapter 2", "Chapter 3", "Chapter 4", "Chapter 5", "Chapter 6"));
下面是一个包含 4 个字段的 Java 对象的有效 XML 表示的示例,其中一个是集合(参见上面的 Java 代码):
<title>我最喜欢的书</title>
<author>Amigo</author>
<pageCount>999</pageCount>
<chapters>
<chapters>第一章</chapters>
<chapters>第二章</chapters>
<chapters>第3章</chapters>
<chapters>第4章</chapters>
<chapters>第5章</chapters>
<chapters>第6章</chapters>
</chapters>
</Book>
XML模式
XML 模式是对 XML 文档结构的描述。相应的规范(XML Schema Definition,或 XSD)是 W3C 的推荐标准。
XSD 旨在表达 XML 文档必须遵循的规则。但对我们来说最有趣的是 XSD 被设计用于开发处理 XML 文档的软件。它让我们以编程方式检查 XML 文档的正确性。
包含 XML 架构的文件具有 .xsd 扩展名。设计 XML 模式超出了本课的范围,所以现在只需要知道这种可能性是存在的。
GO TO FULL VERSION