《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月前
|
XML 数据采集 存储
使用Java和XPath在XML文档中精准定位数据
在数据驱动的时代,从复杂结构中精确提取信息至关重要。XML被广泛用于数据存储与传输,而XPath则能高效地在这些文档中导航和提取数据。本文深入探讨如何使用Java和XPath精准定位XML文档中的数据,并通过小红书的实际案例进行分析。首先介绍了XML及其挑战,接着阐述了XPath的优势。然后,提出从大型XML文档中自动提取特定产品信息的需求,并通过代理IP技术、设置Cookie和User-Agent以及多线程技术来解决实际网络环境下的数据抓取问题。最后,提供了一个Java示例代码,演示如何集成这些技术以高效地从XML源中抓取数据。
使用Java和XPath在XML文档中精准定位数据
|
2月前
|
存储 Java API
【Azure 存储服务】Java Storage SDK 调用 uploadWithResponse 代码示例(询问ChatGTP得代码原型后人力验证)
【Azure 存储服务】Java Storage SDK 调用 uploadWithResponse 代码示例(询问ChatGTP得代码原型后人力验证)
|
5天前
|
Java Linux
java读取linux服务器下某文档的内容
java读取linux服务器下某文档的内容
16 3
java读取linux服务器下某文档的内容
|
2月前
|
Java API 数据中心
百炼平台Java 集成API上传文档到数据中心并添加索引
本文主要演示阿里云百炼产品,如何通过API实现数据中心文档的上传和索引的添加。
|
2月前
|
存储 算法 Java
在Java中使用MD5对用户输入密码进行加密存储、同时登录验证。
这篇文章详细介绍了在Java项目中如何使用MD5算法对用户密码进行加密存储和登录验证,包括加入依赖、编写MD5工具类、注册时的密码加密和登录时的密码验证等步骤,并通过示例代码和数据库存储信息展示了测试效果。
在Java中使用MD5对用户输入密码进行加密存储、同时登录验证。
|
2月前
|
XML Java 数据格式
基于Java+freemarker实现动态赋值以及生成Word文档
使用Java和Freemarker技术实现动态数据填充到Word文档模板并生成新的Word文档。
118 0
基于Java+freemarker实现动态赋值以及生成Word文档
|
1月前
|
Java Apache Maven
Java中使用poi+poi-tl实现根据模板导出word文档
这个过程不仅简化了文档生成的工作,而且保证了生成文档的一致性与准确性,特别适合于那些需要生成大量文档的自动化场景。通过以上步骤,Java开发人员可以实现高效、可靠的Word文档导出功能。
301 0
|
2月前
|
存储 Java
如何在 Java 中验证 ArrayList?
【8月更文挑战第23天】
28 0
|
3月前
|
JavaScript Java
Java 将Markdown文件转换为Word和PDF文档
【7月更文挑战第5天】Java中使用`Spire.Doc for Java`库可方便地将Markdown转换为Word或PDF。基本步骤包括导入模块,创建`Document`对象,加载Markdown文件,然后保存为目标格式(`.docx`或`.pdf`)。若遇到`Invalid UTF-8 stream`错误,需确保Markdown文件是UTF-8无BOM编码。页面设置可通过`PageSetup`类调整。注意,实际应用会依据具体需求和环境有所调整。
156 6
|
2月前
|
前端开发 Java
如何实现 Java SpringBoot 自动验证入参数据的有效性
如何实现 Java SpringBoot 自动验证入参数据的有效性
32 0
下一篇
无影云桌面