XML简明教程——文档对象模型——DOM和SAX(一)

概述

SAX是基于事件解析XML文档的代表性技术。SAX通过扫描XML文档的内容,对元素,属性和文本数据内容等逐一分析和处理。

1.XML基于时间的解析模式

基于事件的解析是指XML处理程序线性描述一个XML文档,当XML处理出鞥许从文档的开头至结尾读取XML文档的过程中,逐一分析和处理遇到的元素、属性和字符数据等。

【例子1】奥运金牌榜XML文件:

<?xml version = "1.0" encoding = "UTF-8"?>

<?xml-stylesheet type="application/xml" href = "priority.xsl"?>

<olympic>

<olympic_games>

<year>2008</year>

<city>Beijing</city>

<country>China</country>

<medal_standings>

<country code = "CHN">

<name>China</name>

<rank>1</rank>

<gold>51<gold>

</country>

<country code = "USA">

<name>United States</name>

<rank>2</rank>

<gold>36<gold>

<country>

<country code = "RUS">

<name>Russia</name>

<rank>3</rank>

<gold>23</gold>

<country>

</medal_standings>

</olympic_games>

<olympic>

上面例子是一个普通的xml文档,包含了元素、元素的属性、子元素和元素文本内容、处理指令等主要组成部分。当暂时不考虑属性和指令,XML处理程序将依次按照元素的起始和结束标签等判断元素的编辑范围以及元素内容,并且能够判断元素的层次关系,最终向应用程序报告当前这个你在处理的内容。一个简单的基于事件处理的XML处理程序解析例子,能够得到如下解析结果:

Start Document

Start Element: olympic

Characters:

Start Element:year

Characters:2008

End Element:year

Characters:

Start Element:city

Characters:Beijing

End Element:city

Characters:

Start Element:country

Characters:China

End Element:country

Characters:

Start Element: medal_standings

Characters:

Start Element: country

Characters:

Start Element: name

Characters: China

End Element: name

Characters:

Start Element: rank

Characters: 1

End Element:rank

Characters:

Start Element: gold

Characters: 51

End Element: gold

Characters:

End Element: country

Characters:

Start Element: Country

Characters:

Start Element: name

Characters: United States

End Element: name

Characters:

Start Element: rank

Characters: 2

End Element:rank

Characters:

Start Element: gold

Characters: 36

End Element: gold

Characters:

End Element: country

Characters:

Start Element: country

Characters:

Start Element: name

Characters: Russia

End Element: name

Characters:

Start Element: rank

Characters: 3

End Element:rank

Characters:

Start Element: gold

Characters: 3

End Element:gold

Characters:

End Element: country

Characters:

Start Element: medal_standings

Characters:

Start Element: olympic_games

Characters:

Start Element: olympic

End Document

以上是对例子的一个简单的解析过程,整个过程以XML文档的开始和结尾作为起点和终点。处理过程中的事件包括了文档开始、文档结束、元素开始、元素结束、元素的文本内容等。由于XML处理程序是按照从XML文档中的读取的数据单元进行解析,而不是先进行对XML文档做整体分析,因此及时XML文档不符合形式良好的要求,XML处理程序页并不能事先发现这些错误,知识当正在处理的数据片段与先前已经处理完成的部分发生冲突时,比如结束标签缺失或标签嵌套错误,才会停止解析并报告错误。

处理速度和效率是基于事件的解析方式的一大优势,尤其是对于体积庞大的大兴XML文档,由于不需要把大量文档中的数据加载到内容,从资源利用的角度看,效率也是比较高的。从另外一个角度看,基于事件的XML解析过程由于需要暂存每一次处理步骤的状态,由于分析XML文档是否满足形式良好的要求和其他有效性约束条件,应用程序必须能够处理随时可能发生的错误,因此对于基于事件的处理方式来说,处理过程相对比较复杂。

(详细内容见《XML简明教程》——张欣毅,著)

XML简明教程——文档对象模型——DOM和SAX(一)

时间: 2024-10-10 15:20:01

XML简明教程——文档对象模型——DOM和SAX(一)的相关文章

XML简明教程——文档对象模型——DOM和SAX(二)

DOM概述: DOM是一种典型的基于XML文档树状结构的解析技术.从概念上看,DOM的解析方式非常容易理解.DOM首先加载XML文档,并把XML树状结构存放到计算机内存中做进一步处理. 1.DOM与XML基于树状结构的解析模式 1.1XML基于树状结构的解析模式 XML文档中的文档类型描述.元素.属性.处理指令.注释和文本内容都可以视为状态树的节点.虽然从XML文档本身和XPath的角度来看,节点的含义略有不同,但是,一个XML文档能够被看作是按照一定层次结构分布的节点树. 当一个XML文档被以

详解android解析Xml的三种方式——DOM、SAX以及XMLpull

今天学习了android解析Xml的三种方式——DOM.SAX以及XMLpull,这里对它们进行总结. 如果理解有误,欢迎指正   ^_* 一.DOM方式解析: xml是先把xml文档都读到内存中,然后再用DOM API来访问树形结构,并获取数据.这个写起来很简单,但是很消耗内存.要是数据过大,手机不够牛逼,可能手机直接死机. 常用的DoM接口和类: Document:该接口定义分析并创建DOM文档的一系列方法,它是文档树的根,是操作DOM的基础.Element:该接口继承Node接口,提供了获

文档对象模型-DOM

DOM定义 个人关于文档对象模型的理解是我们日常开发的页面的各个基本结构,如HTML,Head,Body,..但是小红书上的解释是针对XML但经过扩展用于HTML的应用程序编程接口(API,Application Programming Interface).DOM可以把页面映射为一个多层节点结构,把HTML或XML页面中的每个组成部分都当成是某种类型的节点,这些节点又包含着不同类型的数据,而通过DOM创建的这个表示文档的树形图,开发人员就能够主动的控制页面内容和结构. DOM级别 DOM1级:

文档对象模型-DOM(一)

首先看一下DOM树结构: 每个节点都是一个对象,拥有方法和属性. 脚本可以访问以及更新DOM树(不是源代码). 针对DOM树的修改都会反映到浏览器. 访问并更新DOM树需要两个步骤:   一.定位到与需要操作的元素所对应的节点 访问元素的相关方法和属性 1.选择单个元素节点方法 (1) getElementById() //使用元素的id属性(在页面中应是唯一) (2) querySelector() //使用css选择器,返回第一个匹配的元素 (3) 通过使用在DOM树中从第一个元素遍历到另一

文档对象模型——DOM

DOM:文档对象模型,核心对象document,对html元素的样式(颜色.属性.位置).内容.属性进行动态的改变和操作 一.document对象 1.属性 title   返回或设置当前文档的标题   //document.title="标题名" URL   返回当前文档的url            //只能获取不能设置 bgColor  设置文档的背景色 fgColor   设置文档的前景色(设置文字颜色) 2.方法(获取元素的方法) document.getElementByI

文档对象模型-DOM(二)

从NodeList中选择元素 方法一:item()方法,用于返回其中的单一节点,需要在方法的参数中指定所需元素的索引编号. 当其中没有任何元素时,执行代码是对资源的浪费.因此程序员会在执行代码之前,先检查一下在NodeList中是否至少包含一个节点. 可以使用length方法来实现.举例如下: 1 var elements = document.getElementsByClassName('hot'); 2 if(elements.length>=0){ 3 var firstItem = e

DOM 文档对象模型+倒计时

DOM 文档对象模型 DOM (document object model) 文档对象模型,它定义了操作文档对象的接口. DOM 把一份html文档表示为一棵家谱树,使用parent(父), child(子), sibling(兄弟)等记号来表明家庭成员之间的关系. 通过可编程的对象模型,JavaScript 获得了足够的能力来创建动态的 HTML. JavaScript 能够改变页面中的所有 HTML 元素 JavaScript 能够改变页面中的所有 HTML 属性 JavaScript 能够

java xml解析方式(DOM、SAX、JDOM、DOM4J)

XML值可扩展标记语言,是用来传输和存储数据的. XMl的特定: XMl文档必须包含根元素.该元素是所有其他元素的父元素.XML文档中的元素形成了一颗文档树,树中的每个元素都可存在子元素. 所有XML元素都必须有关闭标签. XML标签对大小写敏感,并且所有属性值date都需加引号. XML元素: XMl元素是只从包括开始标签到结束标签的部分,元素可包含其他元素.文本或两者都包含,也可拥有属性. XML解析 基础方法:DOM.SAX DOM解析:平台无关的官方解析方式 SAX解析:Java中基于事

Java学习总结(21)——XML文档解析:DOM解析,SAX解析

一.XML简介1.可扩展性标记语言(eXtensible Markup Language)2.XML用于描述数据3.应用场合:(1)持久化存储数据(2)数据交换(3)数据配置4.XML语法(1)文档类型:在编写XML文档时,需要先使用文档声明,声明XML文档的类型.最简单的声明语法:<?Xml version="1.0" ?>用encoding属性说明文档的字符编码:<?Xml version="1.0" encoding="GB2312