sax解析xml

- XML 解析 总结 DOM SAX PULL MD

梦想的初衷 提交于 2019-12-05 09:44:52
目录 目录 XML 解析 总结 DOM SAX PULL MD 几种解析方式简介 要解析的内容 DOM 解析 代码 输出 SAX 解析 代码 输出 JDOM 解析 代码 输出 DOM4J 解析 代码 输出 PULL 解析 代码 输出 Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina.com 目录 XML 解析 总结 DOM SAX PULL MD JDOM 仓库地址 DOM4j 仓库地址 XmlPull 仓库地址 Android 中默认已经引入 XmlPull,如果需要自己引入,需要同时添加以下两个jar包: 1.1.4 1.1.3.4-O 几种解析方式简介 简介 DOM 方式解析:将xml文件全部载入到内存,组装成一棵dom树,然后通过节点以及节点之间的关系来解析xml文件;理解较简单,但是由于整个文档都需要载入内存,不适用于文档较大时。 SAX 方式解析:基于事件驱动,逐条解析,适用于只处理xml数据;不易编码,而且很难同时访问同一个文档中的多处不同数据。 JDOM 方式解析:主要用来弥补 DOM 和 SAX 在实际应用当中的不足,比使用 DOM 实现更快,仅使用具体类而不使用接口,因此简化了API,并且易于使用。 DOM4j

网络爬虫--SAX处理xml

匿名 (未验证) 提交于 2019-12-03 00:26:01
使用SAX处理xml 实际上有一个固定的框架,即标签开始,标签结束,文本处理。以下面例子讲解 出来book.xml <? xml version = "1.0" encoding = "ISO-8859-1" ?> < bookstore > < book > < title lang = "eng" > Harry Potter </ title > < price > 29.99 </ price > </ book > < book > < title lang = "eng" > Learning XML </ title > < price > 39.95 </ price > </ book > </ bookstore > SAX代码如下: from xml . parsers . expat import ParserCreate #从xml分析器中导入自定义的分析器 class DefaultSaxHander ( object ) : #建一个默认的Sax处理器(当然类的名字可以自己定义) def start_element ( self , name , attrs ) : #标签处理开始,有标签名和属性 self . name = name print ( 'element: %s, attrs: %s' %( self . name , str (

【Python】XML文件解析之SAX(Simple API for XML)

北城以北 提交于 2019-12-01 16:23:44
常见的XML编程接口有DOM和SAX,这两种接口处理XML文件的方式不同,当然使用场合也不同。 DOM和SAX的区别 DOM(Document Object Model):将XML数据在内存中解析成一个树,通过对树的操作来操作XML。 SAX(Simple API for XML):采用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。 因DOM需要将XML数据映射到内存中的树,一是比较慢,二是比较耗内存,而SAX流式读取XML文件,比较快,占用内存少,但需要用户实现回调函数(handler)。 SAX和DOM的使用场合 Use DOM when: • read-write access to the document is required • the processing requires random access to the document Use SAX when: • dealing with big documents (>1MB) • looking for a precise information in the document • instantiating custom objects from the document SAX程序的构成 readers:XML文件的读取器

XML PULL SAX到底有什么区别?

跟風遠走 提交于 2019-11-30 07:36:29
之前虽然一直知道存在常用的几种XML解析方式,也知道SAX的意思,但是没有深入追究过PULL跟SAX的区别。PULL跟SAX虽然都是基于事件的,但是两者最重要的区别应该是: SAX可以认为是“PUSH“的,跟PULL相对。因为Parser在遇到特定事件源的时候会将数据传递给回调函数来处理,从这个意义上讲数据是”推送“给用户的,而PULL方式是遇到特定事件时由用户去从Parser中获取自己感兴趣的,感觉数据像是”拉“下来的。 还有一个区别是:在PULL式解析过程中(while循环里),可以退出循环;但是在SAX过程中,一旦开始解析就要解析完成。 来源: oschina 链接: https://my.oschina.net/u/77646/blog/37693

SAX EntityResolver 的作用

三世轮回 提交于 2019-11-29 15:56:27
1.1 何为 EntityResolver : 官方解释: 如果SAX应用程序叙事实现自定义处理外部实体,则必须实现此接口, 并使用setEntityResolver 方法向SAX 驱动器注册一个实例. 也就是说,对于解析一个xml,sax 首先会读取该xml文档上的声明,根据声明去寻找相应的dtd定义,以便对文档的进行验证, 默认的寻找规则,(即:通过网络,实现上就是声明DTD的地址URI地址来下载DTD声明), 并进行认证,下载的过程是一个漫长的过程,而且当网络不可用时,这里会报错,就是应为相应的dtd没找到, 1.2 EntityResolver 的作用就是项目本身就可以提供一个如何寻找DtD 的声明方法 , 即:由程序来实现寻找DTD声明的过程,比如我们将DTD放在项目的某处在实现时直接将此文档读取并返回个SAX即可,这样就避免了通过网络来寻找DTD的声明 1.3 首先看看EntityResolver 接口声明的方法. public abstract InputSource resolveEntity (String publicId, String systemId) throws SAXException, IOException; 这里,他接收2个参数,publicId ,systemId ,并返回一个InputStream对象, 这里我们以特定的文件来讲解; 1.3

SAX解析XML

亡梦爱人 提交于 2019-11-29 12:55:09
一、使用SAX解析xml文件 新建一个类,继承之DefaultHandler: 示例代码如下: package org.demo.saxxml; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class MyContentsHandler extends DefaultHandler { String Name,Sex; String tagName; String xmlContent=""; @Override //解析每个标签的时候调用的方法 public void characters(char[] ch, int start, int length) throws SAXException { if(tagName.equals("Name")){ Name=new String(ch,start,length); System.out.println(Name); }else if(tagName.equals("Sex")){ Sex=new String(ch,start,length); } super.characters(ch, start, length); } /

SAX解析XML

百般思念 提交于 2019-11-29 06:32:26
1.SAX SAX(Simple Api for XML)是一种XML文件解析的替代方法,相比于DOM,SAX的速度更快,更有效。它逐行扫描文档,一边扫描一边解析,相比于DOM,SAX可以再解析文档的任意时刻停止解析,缺点就是复杂。 2.DOM DOM(Document Object Model)文档对象模型,DOM解析XML时,会将内容一次性加载到内存中,并构建一个驻留再内存中的树状结构(节点树),如果需要解析的文档内容过大,或者我们仅仅对文档中的一部分内容感兴趣,就会引起性能问题。 3.JAXP JAXP(Java Api for XML)解析XML文档的一套API,其为DOM和SAX两种解析机制提供了支持。 缺点:使用繁琐,代码量低,可读性差。 解决方案:使用dom4j或者JDOM解析器。 JAXP本身没有提供任何的XML解析支持,所以JAXP依赖与XML解析器,但其本身不与任何XML解析器耦合,因此可轻松在各种XML解析器直接切换而无须修改源代码,本质解释XML解析器与应用程序直接的抽象层。 JAXP使用Xerces为默认解析器。 4.解析器 目前最流行的是Apache组织的Xerces项目。 网址: http://xerces.apache.org/ 来源: https://blog.csdn.net/m0_37438942/article/details

sax/dom/jdom/dom4j的区别

雨燕双飞 提交于 2019-11-28 09:22:33
网上能够查到很多的4种解析方式的区别,我再做一下摘录和总结,顺带给自己做个备份。 SAX sax分析器在对xml文档进行分析时,触发一系列的事件,应用程序通过事件处理函数实现对xml文档的访问. 因为事件触发是有时序性的,所以sax分析器提供的是一种对xml文档的顺序访问机制,对于已经分析过的部分, 不能再重新倒回去处理.此外,它也不能同时访问处理2个tag. sax分析器在实现时,只是顺序地检查xml文档中的字节流,判断当前字节是xml语法中的哪一部分,检查是否符合 xml语法并且触发相应的事件.对于事件处理函数的本身,要由应用程序自己来实现. SAX解析器采用了基于事件的模型,它在解析XML文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。 同DOM分析器相比,sax分析器对xml文档的处理缺乏灵活性,但对于只访问xml文档中的数据而不改变应用程序 来说,sax分析器的效率会很高. sax对内存要求也比较低. 优点:1、无需将整个文档加载到内存中,所以内存消耗少. 2 、推模型允许注册多个contentHandler. 缺点:1、没有内置的文档导航支持. 2、不能随机访问xml文档. 3、不支持原地修改xml. 4、不支持名字空间作用域. 适合:对xml文档读取数据 DOM

java解析xml的四种方法汇总

主宰稳场 提交于 2019-11-28 09:21:19
众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM、SAX、JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都 自带 了,在xml-apis.jar包里 SAX: http://sourceforge.net/projects/sax/ JDOM: http://jdom.org/downloads/index.html DOM4J: http://sourceforge.net/projects/dom4j/ 一、介绍及优缺点分析 1. DOM (Document Object Model) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。 【优点】 ①允许应用程序对数据和结构做出更改。 ②访问是双向的,可以在任何时候在树中上下导航,获取和操作任意部分的数据。 【缺点】 ①通常需要加载整个XML文档来构造层次结构,消耗资源大。 2. SAX(Simple API for XML) SAX处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且

JAVA解析XML的方式DOM、SAX、DOM4J、JDOM、StAX之详解与比较

﹥>﹥吖頭↗ 提交于 2019-11-27 06:39:04
JAVA解析XML的方式DOM、SAX、DOM4J、JDOM、StAX之详解与比较 1.各种方式的详解 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的 官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找 特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM 以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下 导航,而不是像SAX那样是一次性的处理。DOM使用起来也要简单得多。 2)SAX SAX处理的优点非常类似于流 媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数 据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说,SAX还比 它的替代者DOM快许多。 选择DOM还是选择SAX? 对于需要自己编写代码来处理XML文档的开发人员来说, 选择DOM还是SAX解析模型是一个非常重要的设计决策。 DOM采用建立树形结构的方式访问XML文档,而SAX采用的事件模型。