《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一3.1.1 XML文档的结构

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

3.1.1 XML文档的结构

XML文档应当以一个文档头开始,例如:
image

严格来说,文档头是可选的,但是强烈推荐你使用文档头。

注意:因为建立SGML是为了处理真正的文档,因此XML文件被称为文档,尽管许多XML文件是用来描述通常不被称作文档的数据集的。

文档头之后通常是文档类型定义(Document Type Def?inition,DTD),例如:
image

文档类型定义是确保文档正确的一个重要机制,但是它不是必需的。我们将在本章的后面讨论这个问题。
最后,XML文档的正文包含根元素,根元素包含其他元素。例如:
image

元素可以有子元素(child element)、文本或两者皆有。在上述例子中,font元素有两个子元素,它们是name和size。name元素包含文本“Helvetica”。

提示:在设计XML文档结构时,最好让元素要么包含子元素,要么包含文本。换句话说,你应该避免下面的情况:

image

在XML规范中,这叫做混合式内容(mixed content)。在本章中,稍后你将会看到,如果避免了混合式内容,就可以简化解析过程。

XML元素可以包含属性,例如:
image

何时用元素,何时用属性,在XML设计人员中存在一些分歧。例如,将font做如下描述:
image

似乎比下面的描述更简单一些:
image

但是,属性的灵活性要差很多。假设你想把单位添加到size的值中去,如果使用属性,那么就必须把单位添加到属性值中去:
image

嗨!现在必须对字符串“36 pt”进行解析,而这正是XML被设计用来避免的那种麻烦。而向size元素中添加一个属性看起来会清晰得多:
image

一条常用的经验法则是,属性只应该用来修改值的解释,而不是用来指定值。如果你发现自己陷入了争论,在纠结于某个设置是否是对某个值的解释所作的修改,那么你就应该对属性说“不”,转而使用元素,许多有用的文档根本就不使用属性。

注意:在HTML中,属性的使用规则很简单:凡是不显示在网页上的都是属性。例如在下面的超链接中:

image

字符串Java Technology要在网页上显示,但是这个链接的URL并不是显示页面的一部分。然而,这个规则对于大多数XML并不那么管用,因为XML文件中的数据并非像通常意义那样是让人浏览的。
元素和文本是XML文档“主要的支撑要素”,你可能还会遇到的其他一些标记,说明
如下:
image
image

相关文章
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
1115 5
|
存储 安全 Java
Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
【10月更文挑战第17天】Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
309 2
|
9月前
|
存储 Java 编译器
深入理解Java虚拟机--类文件结构
本内容介绍了Java虚拟机与Class文件的关系及其内部结构。Class文件是一种与语言无关的二进制格式,包含JVM指令集、符号表等信息。无论使用何种语言,只要能生成符合规范的Class文件,即可在JVM上运行。文章详细解析了Class文件的组成,包括魔数、版本号、常量池、访问标志、类索引、字段表、方法表和属性表等,并说明其在Java编译与运行过程中的作用。
259 0
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
传感器 监控 Java
Java代码结构解析:类、方法、主函数(1分钟解剖室)
### Java代码结构简介 掌握Java代码结构如同拥有程序世界的建筑蓝图,类、方法和主函数构成“黄金三角”。类是独立的容器,承载成员变量和方法;方法实现特定功能,参数控制输入环境;主函数是程序入口。常见错误包括类名与文件名不匹配、忘记static修饰符和花括号未闭合。通过实战案例学习电商系统、游戏角色控制和物联网设备监控,理解类的作用、方法类型和主函数任务,避免典型错误,逐步提升编程能力。 **脑图速记法**:类如太空站,方法即舱段;main是发射台,static不能换;文件名对仗,括号要成双;参数是坐标,void不返航。
509 5
|
人工智能 JSON Java
列表结构与树结构转换分析与工具类封装(java版)
本文介绍了将线性列表转换为树形结构的实现方法及工具类封装。核心思路是先获取所有根节点,将其余节点作为子节点,通过递归构建每个根节点的子节点。关键在于节点需包含 `id`、`parentId` 和 `children` 三个属性。文中提供了两种封装方式:一是基于基类 `BaseTree` 的通用工具类,二是使用函数式接口实现更灵活的方式。推荐使用后者,因其避免了继承限制,更具扩展性。代码示例中使用了 Jackson 库进行 JSON 格式化输出,便于结果展示。最后总结指出,理解原理是进一步优化和封装的基础。
407 0
|
JavaScript Java 测试技术
基于Java+SpringBoot+Vue实现的车辆充电桩系统设计与实现(系统源码+文档+部署讲解等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
JSON Java 程序员
Java|如何用一个统一结构接收成员名称不固定的数据
本文介绍了一种 Java 中如何用一个统一结构接收成员名称不固定的数据的方法。
222 3
|
Java Linux
java读取linux服务器下某文档的内容
java读取linux服务器下某文档的内容
162 3
java读取linux服务器下某文档的内容
|
存储 算法 Java
🚀Java零基础-顺序结构详解 🚀
【10月更文挑战第11天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
240 6