《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一3.1 XML概述

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

3.1 XML概述

在卷Ⅰ第13章中,你已经看见过用属性文件(property f?ile)来描述程序配置。属性文件包含了一组名/值对,例如:
image

你可以用Properties类在单个方法调用中读入这样的属性文件。这是一个很好的特性,但这还不够。在许多情况下,想要描述的信息的结构比较复杂,属性文件不能很方便地处理它。例如,对于下面例子中的fontname/fontsize项,使用以下的单一项将更符合面向对象的要求:
image

但是,这时对字体描述的解析就变得很讨厌了,必须确定字体名在何处结束,字体大小在何处开始。
属性文件采用的是一种单一的平面层次结构。你常常会看到程序员用如下的键名来努力解决这种局限性:
image

属性文件格式的另一个缺点是要求键是唯一的。如果要存放一个值序列,则需要另一个变通方法,例如:
image

XML格式解决了这些问题,因为它能够表示层次结构,这比属性文件的平面表结构更灵活。
描述程序配置的XML文件可能会像这样:
image

XML格式能够表达层次结构,并且重复的元素不会被曲解。
正如上面看到的,XML文件的格式非常直观,它与HTML文件非常相似。这是有原因的,因为XML和HTML格式是古老的标准通用标记语言(Standard Generalized Markup Language,SGML)的衍生语言。
SGML从20世纪70年代开始就用于描述复杂文件的结构。它的使用在一些要求对海量文献进行持续维护的产业中取得了成功,特别是在飞机制造业中。但是,SGML相当复杂,所以它从未风行。造成SGML如此复杂的主要原因是SGML有两个相互矛盾的目标。它既想要确保文档能够根据其文档类型的规则来形成,又想要通过可以减少数据键入的快捷方式使数据项变得容易表示。XML设计成了一个用于因特网的SGML的简化版本。和通常情况一样,越简单的东西越好,XML立即得到了长期以来一直在躲避SGML的用户的热情追捧。
注意:在http://www.xml.com/axml/axml.html处可以找到一个由Tim Bray注释的XML标准的极佳版本。
image

相关文章
|
19天前
|
存储 安全 Java
Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
【10月更文挑战第17天】Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
47 2
|
3月前
|
XML JavaScript Java
【JAVA XML 探秘】DOM、SAX、StAX:揭秘 Java 中 XML 解析技术的终极指南!
【8月更文挑战第25天】本文详细探讨了Java中三种主流的XML解析技术:DOM、SAX与StAX。DOM将XML文档转换为树状结构,便于全方位访问和修改;SAX采取事件驱动模式,适用于大型文件的顺序处理;StAX则兼具DOM和SAX的优点,支持流式处理和随机访问。文中提供了每种技术的示例代码,帮助读者理解如何在实际项目中应用这些解析方法。
153 1
|
17天前
|
存储 Java API
优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。
【10月更文挑战第19天】本文介绍了如何优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。内容包括Map的初始化、使用Stream API处理Map、利用merge方法、使用ComputeIfAbsent和ComputeIfPresent,以及Map的默认方法。这些技巧不仅提高了代码的可读性和维护性,还提升了开发效率。
39 3
|
17天前
|
存储 安全 Java
Java Map新玩法:深入探讨HashMap和TreeMap的高级特性
【10月更文挑战第19天】Java Map新玩法:深入探讨HashMap和TreeMap的高级特性,包括初始容量与加载因子的优化、高效的遍历方法、线程安全性处理以及TreeMap的自然排序、自定义排序、范围查询等功能,助你提升代码性能与灵活性。
23 2
|
1月前
|
消息中间件 分布式计算 Java
大数据-73 Kafka 高级特性 稳定性-事务 相关配置 事务操作Java 幂等性 仅一次发送
大数据-73 Kafka 高级特性 稳定性-事务 相关配置 事务操作Java 幂等性 仅一次发送
27 2
|
1月前
|
消息中间件 存储 Java
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
41 3
|
1月前
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
68 4
|
1月前
|
XML JavaScript Java
java与XML文件的读写
java与XML文件的读写
23 3
|
2月前
|
安全 Java API
Java 18 概述:新特性一览
Java 18 作为 Java 平台的最新版本,引入了多项令人振奋的新特性和改进,包括模式匹配、记录类型、流库改进、外部函数与内存 API 以及并发处理增强。这些新功能不仅提升了开发者的生产力,还显著增强了 Java 的性能和安全性。本文将详细介绍 Java 18 的主要新特性,并通过代码示例帮助读者更好地理解和应用这些功能。
|
3月前
|
XML 存储 JavaScript
在 Java 中如何将 ArrayList 转换为 XML
【8月更文挑战第23天】
26 3