SAX |
DOM |
依序读入文件并产生相对应事件,可以处理任何大小的XML文件。 | 在内存中建立文件树,不适于处理大型的XML文件。 |
只能对文件按顺序剖析一遍,不支持对文件的随意存取 | 可以随意存取文件树的任何部分,没有次数限制 |
只能读取XML文件内容,而不能修改 | 可以随意修改文件树,从而修改了XML文件 |
开发上比较复杂,需要自己来制作事件处理器 | 易于理解,易于开发 |
可以用SAX建立自己的XML对象模型 | 已经在DOM基础之上建立了文件树 |
选择 DOM 还是选择 SAX,这取决于下面几个因素:
1.应用程序的目的:如果打算对数据作出更改并将它输出为 XML,那么在大多数情况下,DOM 是适当的选择。并不是说使用 SAX 就不能更改数据,
但是该过程要复杂得多,因为您必须对数据的一份拷贝而不是对数据本身作出更改。
2.数据容量: 对于大型文件,SAX 是更好的选择。
数据将如何使用:如果只有数据中的少量部分会被使用,那么使用 SAX 来将该部分数据提取到应用程序中可能更好。 另一方面,
如果您知道自己以后会回头引用已处理过的大量信息,那么 SAX 也许不是恰当的选择。
3.对速度的需要: SAX 实现通常要比 DOM 实现更快。
dom是w3c指定的一套规范标准,核心是按树形结构处理数据,dom解析器读入xml文件并在内存中建立一个结构一模一样的“树”,这树各节点和xml各标记对应,通过操纵此“树”来处理xml中的文件。xml文件很大时,建立的“树”也会大,所以会大量占用内存。
sax解析器占内存少,效率高。
sax解析器核心是事件处理机制。例如解析器发现一个标记的开始标记时,将所发现的数据会封装为一个标记开始事件,并把这个报告给事件处理器,事件处理器再调用方法(startElement)处理发现的数据。事件处理器可以自己编写也可以从父类继承。
sax解析器占内存少,效率高。
sax解析器核心是事件处理机制。例如解析器发现一个标记的开始标记时,将所发现的数据会封装为一个标记开始事件,并把这个报告给事件处理器,事件处理器再调用方法(startElement)处理发现的数据。事件处理器可以自己编写也可以从父类继承。
Dom解析XML
public class DomDemo {
//
public static void main(String[] args) throws Exception {
public static void main(String[] args) throws Exception {
// 1.创建一个用来创建DOM解析器对象的工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 2.工厂创建解析器对象
DocumentBuilder dbuilder = factory.newDocumentBuilder();
// 3.解析指定的文件,得到Document对象,即文档对象
Document doc = dbuilder.parse("F:\\abc\\Students.xml");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 2.工厂创建解析器对象
DocumentBuilder dbuilder = factory.newDocumentBuilder();
// 3.解析指定的文件,得到Document对象,即文档对象
Document doc = dbuilder.parse("F:\\abc\\Students.xml");
// 获得第一个节点
Node node = doc.getFirstChild();
System.out.println(node.getNodeName());
Node node = doc.getFirstChild();
System.out.println(node.getNodeName());
// 获得该节点的所有子节点
NodeList list = node.getChildNodes();
// 遍历节点队列,获得所有子节点
for (int i = 0; i < list.getLength(); i++) {
Node n = list.item(i);
if (n instanceof Element) {
System.out.println(n.getNodeName());
}
}
NodeList list = node.getChildNodes();
// 遍历节点队列,获得所有子节点
for (int i = 0; i < list.getLength(); i++) {
Node n = list.item(i);
if (n instanceof Element) {
System.out.println(n.getNodeName());
}
}
}
}
Dom解析XML
public class DomDemo {
//
public static void main(String[] args) throws Exception {
public static void main(String[] args) throws Exception {
// 1.创建一个用来创建DOM解析器对象的工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 2.工厂创建解析器对象
DocumentBuilder dbuilder = factory.newDocumentBuilder();
// 3.解析指定的文件,得到Document对象,即文档对象
Document doc = dbuilder.parse("F:\\abc\\Students.xml");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 2.工厂创建解析器对象
DocumentBuilder dbuilder = factory.newDocumentBuilder();
// 3.解析指定的文件,得到Document对象,即文档对象
Document doc = dbuilder.parse("F:\\abc\\Students.xml");
// 获得第一个节点
Node node = doc.getFirstChild();
System.out.println(node.getNodeName());
Node node = doc.getFirstChild();
System.out.println(node.getNodeName());
// 获得该节点的所有子节点
NodeList list = node.getChildNodes();
// 遍历节点队列,获得所有子节点
for (int i = 0; i < list.getLength(); i++) {
Node n = list.item(i);
if (n instanceof Element) {
System.out.println(n.getNodeName());
}
}
NodeList list = node.getChildNodes();
// 遍历节点队列,获得所有子节点
for (int i = 0; i < list.getLength(); i++) {
Node n = list.item(i);
if (n instanceof Element) {
System.out.println(n.getNodeName());
}
}
}
}
相关推荐
DOM(Document Object Model)解析和SAX(Simple API for XML)解析是两种常见的XML文档解析方式,它们在处理XML数据时有不同的策略和优缺点。 DOM解析是一种基于树型结构的XML解析方法。当一个XML文档被DOM解析器...
### SAX与DOM之间的区别 #### 一、概述 在处理XML文档时,开发人员面临着一个基本的选择:使用DOM(文档对象模型)还是SAX(简单的API for XML)。这两种方法各有优势,选择哪一种取决于具体的应用场景和技术需求...
在XML开发过程中,DOM (Document Object Model) 和 SAX (Simple API for XML) 是两种常见的解析方式。这两种方法各有优势,适用于不同的场景。本文旨在深入探讨这两种技术的特点及其适用场景,并通过具体的案例帮助...
在处理XML文档时,有两大主流解析方式:SAX(Simple API for XML)和DOM(Document Object Model)。这两种解析方式各有特点,适用于不同的场景。 1. SAX解析: SAX解析是一种事件驱动的解析方法,它逐行读取XML...
【dom4j基础入门文档(SAX,DOM,XPATH)】 dom4j是一个流行的Java库,专门用于处理XML文档。相较于W3C DOM API,dom4j的优势在于它内置了本地XPath支持,使得XML文档的查询和操作更为简便。本文将深入介绍dom4j的...
在Java中,解析XML有多种方法,主要包括DOM、SAX和DOM4J。下面将详细介绍这三种解析方式及其对应的jar包。 1. DOM (Document Object Model) DOM是一种基于树形结构的XML解析方法,它将整个XML文档加载到内存中,...
DOM(Document Object Model)和SAX(Simple API for XML)是两种主要的XML解析方法。在Java编程中,dom4j库提供了对这两种解析方式的支持。 **DOM解析**: DOM解析器将整个XML文档加载到内存中,创建一个树形结构...
为了处理XML文档,有三种主要的解析方式:DOM、SAX和DOM4J。每种方法都有其特点和适用场景,下面将详细介绍这三种解析方式。 1. DOM(Document Object Model) DOM解析器将整个XML文档加载到内存中,构建一个树形...
本文将深入探讨DOM、SAX、JDom和dom4j四种流行的Java XML解析器,以及它们在处理XML文档时的特点和用法。 1. DOM(Document Object Model) DOM是W3C推荐的一种解析XML的标准方法。它将XML文档表示为一个树形结构,...
本篇文章将探讨四种处理XML的Java库:DOM、JDOM、SAX和DOM4J,分析它们的原理、性能特点以及适用场景。 首先,我们来了解DOM(Document Object Model)。DOM是W3C组织定义的一种API,它将XML文档解析为一个树形结构...
DOM4J、SAX和DOM是处理XML文档的三种主要解析器或API,它们各有特点,适用于不同的场景。 1. DOM(Document Object Model) DOM是一种将XML文档转换为内存中的树形结构的模型,它允许开发者通过节点层次结构来访问...
在处理XML文件时,SAX(Simple API for XML)和DOM(Document Object Model)是两种主要的解析方法,它们各自有其特点和适用场景。 **SAX解析**: SAX是一种基于事件驱动的解析方式。当XML文件被解析时,解析器会...
对于xml&dom&sax&dom4j 文件解析的代码总结
在处理XML文档时,有多种解析方式,包括DOM、SAX、JDOM和DOM4J。每种解析方式都有其特性和适用场景,下面将详细探讨这四种解析方法。 1. DOM(Document Object Model) DOM解析器将整个XML文档加载到内存中,形成一...
在Java中,解析XML文档主要有两种常见方式:SAX(Simple API for XML)和DOM(Document Object Model)。本文将深入探讨这两种解析方式的区别、优缺点以及适用场景。 **SAX解析** SAX解析是一种事件驱动的解析方法...
Java提供了多种解析XML的API,包括SAX(Simple API for XML)、DOM(Document Object Model)以及DOM4J。下面我们将详细探讨这些解析方式及其在实际开发中的应用。 1. SAX解析器: SAX是一种基于事件驱动的解析器,...
本文将详细介绍XML的三种解析方式:Pull、SAX和DOM,并通过代码示例阐述它们的实现过程。 一、Pull解析 Pull解析是一种事件驱动的解析方式,它不需要一次性加载整个XML文档,而是按需读取,降低了内存占用。在Java...
为了处理XML文档,有两种主要的解析方式:SAX(Simple API for XML)和DOM(Document Object Model)。这两者在处理XML文档时有着显著的不同。 DOM解析方式是基于树形结构的,它将整个XML文档加载到内存中,形成一...
总结起来,VTD-XML是介于SAX和DOM之间的一个折衷方案,它在保持低内存占用的同时,提供了XPath支持和更高的性能,对于那些需要高效解析和查询XML的应用来说,VTD-XML是一个理想的选择。同时,它的跨平台性和多语言...