基于XML的程序结构如图
DOM、SAX是最主要的两种编程接口规范,Apache Xerces提供DOM和SAX API,支持多种语言
DOM概述
DOM是一个比XML更早的概念,例如IE中的DOM,可以通过JavaScript进行操作HTML
W3C的DOM可以看作是一个平台或语言的界面,允许程序和脚本动态地访问及更新文档的内容、结构、脚本程序。也就是说,DOM是一组API,它把XML文档作为对象,接口中包含了对文档的操作的属性和方法定义
DOM将XML文档看作树,根元素对应树的根节点,子元素对应子节点。利用DOM处理XML文档时,DOM处理器先把XML文档加载到内存中,在内存中,XML文档的逻辑结构以树的形式存在,对XML的操作都是建立在树的结构上的
DOM有3个版本,即DOM Level 1、2和3,已被MSXML等处理器支持的是1和2
DOM的结构
XML的所有一切都可以看作节点,包括文档本身、XML声明、注释、处理指令、根元素、子元素、元素的内容等
XML文档具有层次结构
根节点:对应整个XML文档,也叫文档节点
根元素:仅被文档节点饱含,也叫文档元素
注:属性节点不是元素节点的子节点
文档节点:是DOM树的根节点,根元素节点是它的一个子节点,接口为Document
元素节点:表示XML元素,可拥有子元素、文本子节点,是唯一具有属性的节点,接口为Element
文本节点:只能包含文本内容(或空白),可以使元素文本或属性值,接口为Text
属性节点:代表元素的属性,接口为Attr DOM树中实际没有属性节点,因为属性是依附于元素的
DOM的优缺点
优点:
整个文档结构和数据都在内存中,可以随时按照节点间的关系访问数据
节点的移动、插入、删除,结构和数据的修改,都在内存中进行
缺点:
受内存容量限制,不能处理大的文档
由于没有索引机制,处理效率较低
DOM的接口及实现
W3C的DOM是用IDL(接口描述语言)描述的与操作系统和程序设计语言无关的接口规范,并未规定实现这一规范的类(Class)或结构(Structure)
各软件厂商以软件包的形式实现DOM接口:
MSXML:支持DOM Level 2.0 core
JAXP:http://java.sun.com/j2se
DOM4j:可以看作JAXP的简化版http://www.dom4j.org
DOM程序设计
主要有三种用途:
处理XML文档:将XML加载至内存,以节点方式分析、处理XML文档,输出或保存XML文档
验证XML文档:将XML加载至内存,使用XML DTD或Schema验证XML文档
执行XSLT转换:加载XML、XSLT文档,并执行XSLT转换
SAX概述
SAX(Simple API for XML)采用流机制读取、分析XML文档。SAX由SAX项目组(http://www.saxproject.org)维护 ,Java源代码可到http://sourceforge.net下载
SAX是事件驱动的,包括解析器和处理器两部分。解析器对XML流进行解析,将元素、属性、文本、注释等作为“事件”顺序交由处理器进行处理。
SAX处理XML数据涉及以下步骤:
创建一个事件处理程序
创建 SAX 解析器
向解析器分配事件处理程序
解析文档,同时向事件处理程序发送每个事件
SAX在读取XML流的同时处理流
例如,对于XML文档:
<?xml version="1.0"?>
<samples>
<server>UNIX</server>
<monitor>color</monitor>
</samples>
分析该XML流时,一般将产生以下事件:
Start document
Start element (samples)
Characters (white space)
Start element (server)
Characters (UNIX)
End element (server)
Characters (white space)
Start element (monitor)
Characters (color)
End element (monitor)
Characters (white space)
End element (samples)
SAX API 允许开发人员捕捉这些事件并对它们作出反应
SAX解析器和处理器的接口定义位于org.xml.sax包中
XML解析器(XMLReader接口)
允许应用程序设置、查询解析器的功能和特性,注册处理文档的事件处理器,启动文档解析
事件处理器(ContentHandler接口)
SAX应用程序负责提供实现XMLReader接口的解析器类,其中事件处理器是要实现的主要的处理器之一,用于获得解析事件
错误处理器(ErrorHandler接口)
要实现定制的错误处理,就必须实现该接口
SAX的特征
流式处理机制,边读取便分析,内存中只保留XML片断
对内存要求低,可处理大型文档
可随时中断处理,而不必等待全部XML处理完毕,避免加载不必要的数据,可充分利用内存资源
SAX处理器是顺序的,已经分析过的数据将不能再反复处理,不适合修改或随机访问XML文档
分享到:
相关推荐
DOM(Document Object Model)解析和SAX(Simple API for XML)解析是两种常见的XML文档解析方式,它们在处理XML数据时有不同的策略和优缺点。 DOM解析是一种基于树型结构的XML解析方法。当一个XML文档被DOM解析器...
在Java中,处理XML文件主要有两种解析器:DOM(Document Object Model)和SAX(Simple API for XML)。这两种解析方式各有特点,适用于不同的场景。 1. DOM解析: DOM解析器将整个XML文档加载到内存中,构建一个树...
在Java中,有多种方式可以解析XML文档,其中最常用的是DOM(Document Object Model)和SAX(Simple API for XML)。本篇文章将详细介绍DOM和SAX解析XML的方法,并通过提供的`DomDemo.java`和`SaxDemo.java`示例代码...
在XML处理中,有两个主要的解析模型:基于对象的DOM(Document Object Model)和基于事件的SAX(Simple API for XML)。它们都是用来解析和操作XML文档的API,但各有特点和适用场景。 DOM模型是一种基于树的解析...
Java 解析 XML 文件的 DOM 和 SAX 方式是指在 Java 中使用 Document Object Model(DOM)和 Simple API for XML(SAX)两种方式来解析 XML 文件的技术。下面将详细介绍这两种方式的原理、实现和优缺点。 DOM 方式 ...
DOM(Document Object Model)是一种与平台和语言无关的标准接口,用于访问和操作XML文档。JDOM的主要优点是它完全用Java编写,因此在Java环境中性能较好,且易于理解和使用。通过JDOM,开发者可以方便地创建和修改...
解析XML文档是理解和操作这些数据的关键步骤,主要有两种主要方法:DOM(Document Object Model)和SAX(Simple API for XML)。这两种方法各有优缺点,适用于不同的场景。 一、DOM解析 DOM解析器将整个XML文档加载...
DOM(Document Object Model)是 W3C 官方标准,用于表示 XML 文档的树形结构。DOM 解析器将 XML 文档转换为树形结构,允许开发人员在树中寻找特定信息。DOM 解析器的优点是: * 允许修改 XML 文档的结构和内容 * ...
首先,我们来了解DOM(Document Object Model)。DOM是W3C组织定义的一种API,它将XML文档解析为一个树形结构,允许开发人员通过节点操作来访问和修改XML内容。DOM的优点在于其直观易用,可以方便地遍历整个文档并...
在处理XML文档时,开发者面临着多种解析技术的选择,包括DOM(Document Object Model)、SAX(Simple API for XML)、JDOM等。其中,DOM和SAX是最常用且重要的两种方式。本文将对这两种技术进行深入比较,并探讨它们...
在C#中处理XML时,有两种主要的解析方法:DOM(Document Object Model)和SAX(Simple API for XML)。 1. DOM解析: DOM是一种将整个XML文档加载到内存中的解析方式,它构建了一个树形结构来表示XML文档,允许...
首先,我们要介绍两种主要的XML解析器:DOM(Document Object Model)和SAX(Simple API for XML)。 1. DOM解析器:DOM是一种基于树形结构的XML解析方法,它将整个XML文档加载到内存中形成一个文档对象模型,允许...
1. DOM(Document Object Model) DOM是W3C推荐的一种解析XML的标准方法。它将XML文档表示为一个树形结构,允许开发者通过节点操作来访问和修改XML文档的任何部分。DOM解析器一次性加载整个XML文档到内存,因此适用...
1. DOM(Document Object Model) DOM解析器将整个XML文档加载到内存中,构建一个树形结构,即DOM树。每个XML元素、属性、文本节点等都被表示为树中的一个节点。这种方式允许开发者通过遍历树来访问任何部分的数据,...
在C语言环境中,处理XML文件时,通常有两种主要的解析模式:DOM(Document Object Model)和SAX(Simple API for XML)。 **DOM解析模式**: DOM解析器将整个XML文档加载到内存中,创建一个树形结构,即文档对象...
1. DOM(Document Object Model)解析: DOM是一种基于树形结构的XML文档模型,它将整个XML文档加载到内存中,形成一个节点树。通过这个树,开发者可以方便地访问和修改文档的任何部分。然而,DOM解析器占用大量内存...
处理XML文件时,我们通常会使用两种主要的方法:DOM(Document Object Model)和SAX(Simple API for XML)。本文将深入探讨这两种解析方式,并通过代码示例来阐述它们的工作原理。 DOM解析是将整个XML文档加载到...
在Qt框架中,处理XML文件是常见的需求,本项目提供了一个使用DOM(Document Object Model)和SAX(Simple API for XML)两种解析方式的示例,帮助开发者理解如何在Qt环境下进行XML文件的读写操作。 首先,DOM是一种...
DOM(Document Object Model)和SAX(Simple API for XML)是解析XML文档的两种主要方法。 DOM是一种W3C标准,它将XML文档视为一棵树形结构,其中每个节点代表XML文档的一部分。在DOM解析中,整个XML文档被加载到...
1. DOM (Document Object Model) DOM是一种基于树形结构的XML解析方法,它将整个XML文档加载到内存中,形成一个对象模型。通过这个模型,开发者可以方便地访问和修改XML文档的任何部分。DOM解析器的核心接口是`org....