A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

XML学习大纲

XML(Extensible Markup Language)是一种类似于 HTML,但是没有使用预定义标记的语言。因此,可以根据自己的设计需求定义专属的标记。这是一种强大将数据存储在一个可以存储、搜索和共享的格式中的方法。最重要的是,因为 XML 的基本格式是标准化的,如果你在本地或互联网上跨系统或平台共享或传输 XML,由于标准化的 XML 语法,接收者仍然可以解析数据。

有许多基于 XML 的语言,包括 XHTMLMathMLSVGRSS 和 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解析技术

  1. dom解析分析:跟据xml的层次结构,在内存中分配一个树形结构,把xml中的标签、属性和文本都封装成对象。
    • 优点:对于增删改操作很方便。
    • 缺点:如果xml文件过大,会造成文件的溢出。
  2. 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