`
Ckery_locker
  • 浏览: 2962 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

SAX和DOM区别

阅读更多

 

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)处理发现的数据。事件处理器可以自己编写也可以从父类继承。
 
Dom解析XML
public class DomDemo {
 //
 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");
  // 获得第一个节点
  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());
   }
  }
 }
}
 

  Dom解析XML

public class DomDemo {
 //
 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");
  // 获得第一个节点
  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());
   }
  }
 }
}
0
0
分享到:
评论

相关推荐

    dom解析和sax解析

    DOM(Document Object Model)解析和SAX(Simple API for XML)解析是两种常见的XML文档解析方式,它们在处理XML数据时有不同的策略和优缺点。 DOM解析是一种基于树型结构的XML解析方法。当一个XML文档被DOM解析器...

    SAX与DOM之间的区别

    ### SAX与DOM之间的区别 #### 一、概述 在处理XML文档时,开发人员面临着一个基本的选择:使用DOM(文档对象模型)还是SAX(简单的API for XML)。这两种方法各有优势,选择哪一种取决于具体的应用场景和技术需求...

    Sax和Dom.doc

    在XML开发过程中,DOM (Document Object Model) 和 SAX (Simple API for XML) 是两种常见的解析方式。这两种方法各有优势,适用于不同的场景。本文旨在深入探讨这两种技术的特点及其适用场景,并通过具体的案例帮助...

    XML的两种解析sax和dom

    在处理XML文档时,有两大主流解析方式:SAX(Simple API for XML)和DOM(Document Object Model)。这两种解析方式各有特点,适用于不同的场景。 1. SAX解析: SAX解析是一种事件驱动的解析方法,它逐行读取XML...

    dom4j基础入门文档(SAX,DOM,XPATH)

    【dom4j基础入门文档(SAX,DOM,XPATH)】 dom4j是一个流行的Java库,专门用于处理XML文档。相较于W3C DOM API,dom4j的优势在于它内置了本地XPath支持,使得XML文档的查询和操作更为简便。本文将深入介绍dom4j的...

    解析XML的dom、sax和dom4j的jar包

    在Java中,解析XML有多种方法,主要包括DOM、SAX和DOM4J。下面将详细介绍这三种解析方式及其对应的jar包。 1. DOM (Document Object Model) DOM是一种基于树形结构的XML解析方法,它将整个XML文档加载到内存中,...

    dom4j下sax解析xml

    DOM(Document Object Model)和SAX(Simple API for XML)是两种主要的XML解析方法。在Java编程中,dom4j库提供了对这两种解析方式的支持。 **DOM解析**: DOM解析器将整个XML文档加载到内存中,创建一个树形结构...

    xml 三种解析方式dom,sax,dom4j

    为了处理XML文档,有三种主要的解析方式:DOM、SAX和DOM4J。每种方法都有其特点和适用场景,下面将详细介绍这三种解析方式。 1. DOM(Document Object Model) DOM解析器将整个XML文档加载到内存中,构建一个树形...

    用DOM SAX JDom dom4j 对xml文档解析实例

    本文将深入探讨DOM、SAX、JDom和dom4j四种流行的Java XML解析器,以及它们在处理XML文档时的特点和用法。 1. DOM(Document Object Model) DOM是W3C推荐的一种解析XML的标准方法。它将XML文档表示为一个树形结构,...

    dom jdom sax dom4j 原理性能比

    本篇文章将探讨四种处理XML的Java库:DOM、JDOM、SAX和DOM4J,分析它们的原理、性能特点以及适用场景。 首先,我们来了解DOM(Document Object Model)。DOM是W3C组织定义的一种API,它将XML文档解析为一个树形结构...

    DOM4J_SAX_DOM_XML的实例

    DOM4J、SAX和DOM是处理XML文档的三种主要解析器或API,它们各有特点,适用于不同的场景。 1. DOM(Document Object Model) DOM是一种将XML文档转换为内存中的树形结构的模型,它允许开发者通过节点层次结构来访问...

    SAX&DOM感想1

    在处理XML文件时,SAX(Simple API for XML)和DOM(Document Object Model)是两种主要的解析方法,它们各自有其特点和适用场景。 **SAX解析**: SAX是一种基于事件驱动的解析方式。当XML文件被解析时,解析器会...

    xml&dom&sax&dom4j 代码编写和总结

    对于xml&dom&sax&dom4j 文件解析的代码总结

    XML四种解析方式------DOM SAX JDOM DOM4J

    在处理XML文档时,有多种解析方式,包括DOM、SAX、JDOM和DOM4J。每种解析方式都有其特性和适用场景,下面将详细探讨这四种解析方法。 1. DOM(Document Object Model) DOM解析器将整个XML文档加载到内存中,形成一...

    XML解析方式SAX和DOM比较.

    在Java中,解析XML文档主要有两种常见方式:SAX(Simple API for XML)和DOM(Document Object Model)。本文将深入探讨这两种解析方式的区别、优缺点以及适用场景。 **SAX解析** SAX解析是一种事件驱动的解析方法...

    Java使用sax、dom、dom4j解析xml文档

    Java提供了多种解析XML的API,包括SAX(Simple API for XML)、DOM(Document Object Model)以及DOM4J。下面我们将详细探讨这些解析方式及其在实际开发中的应用。 1. SAX解析器: SAX是一种基于事件驱动的解析器,...

    Pull,Sax和DOM解析代码

    本文将详细介绍XML的三种解析方式:Pull、SAX和DOM,并通过代码示例阐述它们的实现过程。 一、Pull解析 Pull解析是一种事件驱动的解析方式,它不需要一次性加载整个XML文档,而是按需读取,降低了内存占用。在Java...

    XML解析方式SAX和DOM比较

    为了处理XML文档,有两种主要的解析方式:SAX(Simple API for XML)和DOM(Document Object Model)。这两者在处理XML文档时有着显著的不同。 DOM解析方式是基于树形结构的,它将整个XML文档加载到内存中,形成一...

    VTD-XML 不同于SAX和DOM的XML高效解析器

    总结起来,VTD-XML是介于SAX和DOM之间的一个折衷方案,它在保持低内存占用的同时,提供了XPath支持和更高的性能,对于那些需要高效解析和查询XML的应用来说,VTD-XML是一个理想的选择。同时,它的跨平台性和多语言...

Global site tag (gtag.js) - Google Analytics