《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编程的。

相关文章
|
2月前
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
147 5
|
3月前
|
存储 安全 Java
Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
【10月更文挑战第17天】Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
82 2
|
3月前
|
存储 Java API
优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。
【10月更文挑战第19天】本文介绍了如何优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。内容包括Map的初始化、使用Stream API处理Map、利用merge方法、使用ComputeIfAbsent和ComputeIfPresent,以及Map的默认方法。这些技巧不仅提高了代码的可读性和维护性,还提升了开发效率。
114 3
|
3月前
|
存储 安全 Java
Java Map新玩法:深入探讨HashMap和TreeMap的高级特性
【10月更文挑战第19天】Java Map新玩法:深入探讨HashMap和TreeMap的高级特性,包括初始容量与加载因子的优化、高效的遍历方法、线程安全性处理以及TreeMap的自然排序、自定义排序、范围查询等功能,助你提升代码性能与灵活性。
32 2
|
3月前
|
Java Linux
java读取linux服务器下某文档的内容
java读取linux服务器下某文档的内容
44 3
java读取linux服务器下某文档的内容
|
3月前
|
消息中间件 分布式计算 Java
大数据-73 Kafka 高级特性 稳定性-事务 相关配置 事务操作Java 幂等性 仅一次发送
大数据-73 Kafka 高级特性 稳定性-事务 相关配置 事务操作Java 幂等性 仅一次发送
42 2
|
3月前
|
消息中间件 存储 Java
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
66 3
|
3月前
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
100 4
|
3月前
|
XML JavaScript Java
java与XML文件的读写
java与XML文件的读写
33 3
|
3月前
|
XML 数据格式