XML学习大纲
XML(Extensible Markup Language)是一种类似于 HTML,但是没有使用预定义标记的语言。因此,可以根据自己的设计需求定义专属的标记。这是一种强大将数据存储在一个可以存储、搜索和共享的格式中的方法。最重要的是,因为 XML 的基本格式是标准化的,如果你在本地或互联网上跨系统或平台共享或传输 XML,由于标准化的 XML 语法,接收者仍然可以解析数据。
有许多基于 XML 的语言,包括 XHTML、MathML、SVG、RSS 和 RDF (en-US)。你也可以创建自己的。
XML语法
XML语法很简单,固定头,内容树形嵌套,标签对(start、end),标签属性。
注: 属性是个双刃剑,在数据共享及传输场景,尽量不用属性。
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
XML文档约束
DTD、Schema用于XML文档格式验证。
DTD:DTD(Document Type Definition)文档类型定义,用来约束xml
文档。规定xml
文档中元素的名称,子元素的名称及顺序,元素的属性等等。Schema:用于定义和描述xml文档结构与内容的模式语言。
Schema与DTD相比:
- schema符合xml语法结构, dtd语法:<!ELEMENT 元素名称 约束条件>
- schema对名称空间支持得非常好,一个xml可以有多个schema,多个schema使用名称空间区分(类似于Java中的包名)
- schema比DTD支持更多的数据类型、并支持用户自定义新的数据类型
- schema定义约束的能力非常强大,可以对xml实例文档作出细致的语义限制
- schema不能像DTD一样定义实体,比DTD更复杂,但schema现在已是w3c组织的标准,它正逐步取代DTD
XML解析技术
- dom解析分析:跟据xml的层次结构,在内存中分配一个树形结构,把xml中的标签、属性和文本都封装成对象。
- 优点:对于增删改操作很方便。
- 缺点:如果xml文件过大,会造成文件的溢出。
- sax解析分析:采用事件驱动,边读边解析,从上到下,一行一行的解析,解析到某个对象,把对象名称返回。
- 优点:不会造成内存溢出,实现查询
- 缺点:不能实现增删改操作
XML检索技术:Xpath
XPath在解析XML文档方面提供了一独树一帜的路径思想,更加优雅,高效。XPath使用路径表达式来定位XML文档中的元素节点或属性节点。
常用文本结构化语言
XML:是 “eXtensible Markup Language”(可扩展标记语言),是标记语言。使用广泛,从数据标准、数据交互,到程序交换。
JSON:是“JavaScript Object Notation“( JS 对象标记),一种轻量级的数据交换格式,与JS天然契合。发展于Web时代,是当下REST API的事实数据格式。
YAML:是 ‘YAML Aint Markup Language'(YAML不是一种标记语言)的缩写,本意在强调其以数据作为重心,而非标记语言。常见于程序配置。
Avro:以 JSON 格式存储数据定义,使其便于阅读和解释;数据本身以二进制格式存储,以达到紧凑且高效的目的。常用于大数据。
参考资料
一文概览XML,到XML 教程。
新手入门,到XML入门教程。
了解更多XML相关知识,到XML.com。
了解更多XML相关规范,到W3C。
XML vs JSON vs YAML