DOM解析和SAX解析的对比

SAX & DOM 解析对比

  • SAX 解析特点

    • 只读
    • 从上向下
    • 速度快
    • 解析的时候相对比较繁琐,有5个代理方法,每个代理方法都要写一定代码
    • 适合大的 XML 文件解析

在计算机领域,针对 XML 解析,还有 DOM 解析方式,在 PC 端和服务器端被广泛使用

  • 背景

    • 主要用在 PC 端或者服务器端
    • 苹果提供了 NSXML 类支持 DOM 方式的解析
    • 不过 NSXML 类只能用在 MAC 开发,在 iOS 中无法直接使用
  • DOM 特点
    • DOM 方式不仅能解析 XML 文档,还能够修改: 增加节点/删除节点
    • 一次性将 XML 文档以树形结构读入内存
    • 横向的节点越多,内存消耗越大
    • 使用 DOM 解析适合于小的 XML 解析,并且能够动态维护
    • 有些第三方框架就提供了 DOM 方式的解析,GDataKissXML(XMPP)
    • 在 iOS 开发中,如果要使用 DOM 方式解析,最好只处理小的 XML

使用 GData 解析的小结

  • 使用第三方框架解析 XML 仍然会有些繁琐,原因就是因为 XML 的格式非常复杂
  • 步骤,导入框架的,可以参见 .h 头文件,一共设置两个地方
// libxml includes require that the target Header Search Paths contain
//
//   /usr/include/libxml2
//
// and Other Linker Flags contain
//
//   -lxml2
  • 获得根节点,依次 Log,一定要确认能够拿到所有子节点的内容
  • 横向节点越多,for的层次就越深
  • 根据实际的 XML 的情况,确认解析,基本上通过 KVC 就能够实现快速的解析
时间: 2025-01-04 06:21:46

DOM解析和SAX解析的对比的相关文章

XML 解析---dom解析和sax解析

目前XML解析的方法主要用两种: 1.dom解析:(Document Object Model,即文档对象模型)是W3C组织推荐的解析XML的一种方式. 使用dom解析XML文档,该解析器会先把XML文档加载到内存中,生成该XML文档对应的document对象,然后把XML文档中的各个标签元素变成相应的Element对象,文本会变成Text对象,属性会变成Attribute对象,并按这些标签.文本.属性在XML文档中的关系保存这些对象的关系. 缺点:消耗内存,所以使用dom解析XML文档时不能解

dom解析和sax解析的区别

dom 和 sax 解析方法的区别 1,dom解析的优点是对文档crud比较方便,缺点是占用内存较多2,sax解析的优点是占用内存少,解析速度快,缺点是只适合做文档的读取,不适合做文档的crud 解析方式1 dom是将整个文档加载进内存,所以内存消耗会很大,当文档的太大时,不适合用Dom  dom文档加载进内存后作为一个Document对象,把每个节点当作一个Element对象,如果该元素有内容,就将该内容作为一个Text对象,所以dom对文档的crud很方便2 sax是一行一行的解析,并且不能

JavaWeb-05 XML基础(Dom解析和Sax解析)

JavaWeb-05 JavaWeb-XML基础(Dom解析和Sax解析) 一.XML的概述(了解) eXtensible Markup Language 可扩展标记语言 宗旨是传输数据,而非显示数据. XML标签没有被预定义,需要用户自行定义标签. XML技术是W3C组织(WorldWideWeConsortium万维网联盟)发布的,目前遵循的是W3C组织于2000年发布的XML1.0规范. 作用: a. 传输数据 b. 配置文件(主要用途) XML技术用于解决什么问题? a. XML语言出现

java解析XML① 之DOM解析和SAX解析(包含CDATA的问题)

Dom解析功能强大,可增删改查,操作时会将XML文档读到内存,因此适用于小文档: SAX解析是从头到尾逐行逐个元素解析,修改较为不便,但适用于只读的大文档:SAX采用事件驱动的方式解析XML.如同在电影院看电影一样,从头到尾看一遍,不能回退(Dom可来来回回读取),在看电影的过程中,每遇到一个情节,都会调用大脑去接收处理这些信息.SAX也是相同的原理,每遇到一个元素节点,都会调用相应的方法来处理.在SAX的解析过程中,读取到文档开头.文档结尾,元素的开头和元素结尾都会调用相应方法,我们可以在这些

非常简单的XML解析(SAX解析、pull解析)

这里只是把解析的数据当日志打出来了 非常简单的xml解析方式 1 package com.example.demo.service; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 6 import javax.xml.parsers.DocumentBuilder; 7 import javax.xml.parsers.DocumentBuilderFactory; 8 import javax.xml.parse

XML解析(二) SAX解析

XML解析之SAX解析: SAX解析器:SAXParser类同DOM一样也在javax.xml.parsers包下,此类的实例可以从 SAXParserFactory.newSAXParser() 方法获得. 注意SAXParser的parse()方法: parse(String uri, DefaultHandler dh),parse(File f, DefaultHandler dh)等都需要传递一个DefaultHandler的对象. 查看API帮助手册可知,SAX解析是事件驱动的,De

XML文件解析DOM解析和SAX解析

解析一个XML文档有哪些内容解析有:dom和sax两种dom:把整个XML文档放入内存,适合XML随机访问,占用内存资源大sax:事件驱动型的XML解析方式,顺序读取,不用一次装载整个文件,遇到标签会触发一个事件,适合对XML的顺序访问,占用内存资源稍小 Node: XML 文档的 documentElement 属性是根节点. nodeName 属性是节点的名称.nodeName 是只读的 元素节点的 nodeName 与标签名相同 属性节点的 nodeName 是属性的名称 文本节点的 no

dom解析和sax解析

解析xml有四种方法:DOM,SAX,DOM4j,JDOM. 我们主要学了两种:DOM和SAX. DOM适于解析比较简单的XML而SAX则适于解析较复杂的XML文件.各有各的好. DOM和SAX的不同: 1. DOM是基于内存的,不管文件有多大,都会将所有的内容预先装载到内存中.从而消耗很大的内存空间.而SAX是基于事件的.当某个事件被触发时,才获取相应的XML的部分数据,从而不管XML文件有多大,都只占用了少量的内存空间. 2. DOM可以读取XML也可以向XML文件中插入数据,而SAX却只能

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