为什么需要文本格式?
文本格式便于存储信息,因为它们可以由程序和人类创建和处理。
文本文件(文本格式的文件)可以在各种文本编辑器中打开、阅读和编辑。
许多程序使用基于文本的配置文件,即使格式包含数字和二进制(是/否)值。
由于需要从文本格式转换为内部格式,反之亦然,这使得程序稍微复杂一些,但它可以在不使用程序本身的配置工具的情况下手动编辑配置。
现在在哪里使用 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 模式超出了本课的范围,所以现在只需要知道这种可能性是存在的。