《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一3.3 验证XML文档

简介: 本节书摘来华章计算机《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一书中的第3章 ,第3.3节,[美] 凯S.霍斯特曼(Cay S. Horstmann) 著陈昊鹏 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.3 验证XML文档

在前一节中,我们了解了如何遍历DOM文档的树形结构。然而,如果仅仅按照这种方法来操作,会发现需要大量冗长的编程和错误检查工作。你不但需要处理元素间的空白字符,还要检查该文档包含的节点是否和你期望的一样。例如,当你在读入下面这个元素时:
image

你将首先得到第一个子节点,这是一个含有空白字符“n”的文本节点。你跳过文本节点找到第一个元素节点。然后,你要检查它的标签名是不是“name”,还要检查它是否有一个Text类型的子节点。接下来,转到下一个非空白字符的子节点,并进行同样的检查。那么,当文档作者改变了子元素的顺序或是加入另一个子元素时又会怎样呢?要是对所有的错误检查都进行编码,就会显得太琐碎麻烦了,而跳过这些检查又显得不慎重。
幸好,XML解析器的一个很大的好处就是它能自动校验某个文档是否具有正确的结构。这样,解析就变得简单多了。例如,如果知道font片段已经通过了验证,那么你不用进一步检查就能得到其两个孙节点,并把它们转换成Text节点,得到它们的文本数据。
如果要指定文档结构,可以提供一个文档类型定义(DTD)或一个XML Schema定义。DTD或schema包含了用于解释文档应如何构成的规则,这些规则指定了每个元素的合法子元素和属性。例如,某个DTD可能含有一项规则:
image

这项规则表示,一个font元素必须总是有两个子元素,分别是name和size。将同样的约束用XML Schema表示如下:
image

与DTD相比,XML Schema可以表达更加复杂的验证条件(比如size元素必须包含一个整数)。与DTD语法不同,XML Schema自身使用的就是XML,这为处理Schema文件带来了方便。
在下一节中,我们将详细讨论DTD。接着简要介绍XML Schema的一些基础知识。最后,我们会展示一个完整的应用程序来演示验证是如何简化XML编程的。

相关文章
|
1月前
|
开发框架 Java API
最新Java基础系列课程--Day13-高级特性(二)
最新Java基础系列课程--Day13-高级特性
|
1月前
|
NoSQL Java 关系型数据库
基于java swing和mysql实现的汽车租赁管理系统(源码+数据库+文档+运行指导视频)
基于java swing和mysql实现的汽车租赁管理系统(源码+数据库+文档+运行指导视频)
|
25天前
|
XML Java Maven
nested exception is java.io.FileNotFoundException: class path resource [springmvc.xml] cannot be ope
nested exception is java.io.FileNotFoundException: class path resource [springmvc.xml] cannot be ope
25 0
nested exception is java.io.FileNotFoundException: class path resource [springmvc.xml] cannot be ope
|
20天前
|
canal Java
java字符串练习题7、验证回文串
java字符串练习题7、验证回文串
17 0
|
27天前
|
算法 C++ Java
Java每日一练(20230504) 位1的个数、移除元素、验证二叉搜索树
Java每日一练(20230504) 位1的个数、移除元素、验证二叉搜索树
20 0
Java每日一练(20230504) 位1的个数、移除元素、验证二叉搜索树
|
1月前
|
Java 数据安全/隐私保护
基于Java的酒店管理系统设计与实现(源码+lw+部署文档+讲解等)
基于Java的酒店管理系统设计与实现(源码+lw+部署文档+讲解等)
35 0
|
1月前
|
Java 数据安全/隐私保护
基于Java的即可运动健身器材网站设计与实现(源码+lw+部署文档+讲解)
基于Java的即可运动健身器材网站设计与实现(源码+lw+部署文档+讲解)
28 0
|
1月前
|
存储 前端开发 Java
基于springboot的java读取文档内容(超简单)
基于springboot的java读取文档内容(超简单)
22 0
|
1月前
|
Java 程序员 API
最新Java基础系列课程--Day13-高级特性(三)
最新Java基础系列课程--Day13-高级特性
|
1月前
|
开发框架 Java 程序员
最新Java基础系列课程--Day13-高级特性(一)
最新Java基础系列课程--Day13-高级特性