sax解析xml

Android SAX解析xml文件

☆樱花仙子☆ 提交于 2020-03-24 06:20:13
andorid读取xml文件内容方法有三种 sax dom pull,其中 pull是android自带的 1.先认识一下xml文件中的些术语 <?xml version="1.0" encoding="UTF-8"?> <persons> <person id="23"> <name>李明</name> <age>23</age> </person> <person id="22"> <name>李量</name> <age>25</age> </person> </persons> xml中的标签和内容都可以叫做节点,其中的persons person name age 这些都叫做元素(element).而像李明 25 这些值叫做文本节点.那么有个问题 中<persons>到<person>之间的是什么,什么都没有? 答案是他也是节点,是文本节点,你会说他里面什么都没有啊,错了,它有回车和空格.这个在sax解析xml中你debug一下就会发现.回车和空格(或者 是tab)是会被读取出来的.id是属性. 2.sax sax是采用事件驱动,就是说他不需要完全读完xml文件,他是读到一个节点就解析一个节点是否符合xml语法,如果符合就调用相对应的方法其实就是回调方法,并且没有记忆功能.下面提到的这些方法都是在ContentHander()接口中的方法. startDocumnet()

xml多层嵌套解析方法SAX方式(包括网络请求)

一世执手 提交于 2020-03-24 06:19:26
启用异步类获取数据 package com.bwie.myasynctask; import java.io.IOException; import java.io.InputStream; import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org

android sax解析xml

寵の児 提交于 2020-03-24 06:16:49
在android 中解析 android 主要有 2 种方法,分别是 sax 和 jdom 第一种:SAX 是一个解析速度快并且占用内存少的 xml 解析器,非常适合用于 Android 等移动设备。 SAX 解析 XML 文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在按内容顺序解析文档的过程中, SAX 会判断当前读到的字符是否合法 XML 语法中的某部分,如果符合就会触发事件。所谓事件,其实就是一些回调( callback )方法,这些方法 ( 事件 ) 定义在 ContentHandler 接口。下面是一些 ContentHandler 接口常用的方法: startDocument() 当遇到文档的开头的时候,调用这个方法,可以在其中做一些预处理的工作。 endDocument() 和上面的方法相对应,当文档结束的时候,调用这个方法,可以在其中做一些善后的工作。 startElement(String namespaceURI, String localName, String qName, Attributes atts) 当读到一个开始标签的时候,会触发这个方法。namespaceURI 就是命名空间, localName 是不带命名空间前缀的标签名, qName 是带命名空间前缀的标签名。通过 atts 可以得到所有的属性名和相应的值。要注意的是 SAX

Android 利用SAX解析XML

天涯浪子 提交于 2020-03-24 05:57:30
进入正题: 1、待解析的XML : <?xml version="1.0" encoding="utf-8"?> <mobile> <Response> <list> <item> <id>39</id> <username>user1</username> <content>content1</content> <flag>1</flag> <urlstr>20140103013946_jygy.amr</urlstr> </item> <item> <id>38</id> <username>user2</username> <content>content2</content> <flag>3</flag> <urlstr>20140103013621_jygy.jpg</urlstr> </item> </list> </Response> </mobile> 2、根据上面的XML定义实体 Item.java public class Item { private String id; private String username; private String content; private String flag; private String urlstr; public String getId() { return id; } public void

SAX解析XML

有些话、适合烂在心里 提交于 2020-03-23 14:56:33
sax解析特点:1、逐行读取 2、事件处理-- 方法 3、解析器调用相应的事件    4、 只能读取文件 DefaultHandler 可以触发5个事件 *startDocument() 开始文档 *startElement() 开始元素 *characters() 文本 *endElement() 结束元素 *endDocument() 结束文档 在startElement /** * 如果xml文件使用了schema约束 <xs:element> * * uri:schema -- targetNameSpace * * localName--element * * qName---xs:element * 如果不使用 * * uri:null * * localName:null * * qName : element * * Attributes:当前元素的所有的属性的集合 */ 1 //获得解析工厂实例 2 SAXParserFactory factory=SAXParserFactory.newInstance(); 3 //获得解析器 4 SAXParser parser=factory.newSAXParser(); 5 //解析xml 6 DefaultHandler dh=new MyDefaultHandler(); 7 8 parser.parse(

解析xml的4种方法详解

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

Android心得3.2--用SAX解析器解析xml文件内容

大兔子大兔子 提交于 2020-03-01 12:09:58
一. 在Android 平台上可以使用Simple API for XML(SAX) 、 Document Object Model(DOM)和Android附带的pull解析器解析XML文件。 本例子要解析的XML文件: 文件名称:itcast.xml <?xml version="1.0" encoding="UTF-8"?> <persons> <person id="23"> <name>李明</name> <age>30</age> </person> <person id="20"> <name>李向梅</name> <age>25</age> </person> </persons> 下面这个例子定义了一个javabean用于存放上面解析出来的xml内容, 这个javabean为Person。 public class Person { private Integer id; private String name; private Short age; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name)

报文解析

╄→尐↘猪︶ㄣ 提交于 2020-01-11 04:10:22
jackson、fastjson、gson,json与对象的转换 jaxb、xstream,json与对象、对象与xml间的转换,主要用于后者,jaxb性能更好、xstream使用更加简单 dom、sax、dom4j、stax,xml解析 结构简单固定的用jaxb;jdom可以选用sax方式处理,用于解析文件不太大,需要反复修改的xml文件;对内存资源要求较高时用stax 来源: CSDN 作者: n369497017 链接: https://blog.csdn.net/n369497017/article/details/103856393

Java数据解析---SAX

巧了我就是萌 提交于 2020-01-02 18:44:41
一、 Sax解析 是从头到尾逐行逐个元素读取内容,修改较为不便,但适用于只读的大文档。 Sax采用事件驱动的方式解析文档。简单点说,如同在电影院看电影一样,从头到尾看一遍就完了,不能回退(Dom可来来回回读取) 在看电影的过程中,每遇到一个情节,一段泪水,一次擦肩,你都会调动大脑和神经去接收或处理这些信息 同样,在Sax的解析过程中,读取到文档开头、结尾,元素的开头和结尾都会触发一些回调方法,你可以在这些回调方法中进行相应事件处理 这四个方法是: startDocument() 、 endDocument()、 startElement()、 endElement 此外,光读取到节点处是不够的,我们还需要 characters() 方法来仔细处理元素内包含的内容 将这些回调方法集合起来,便形成了一个类,这个类也就是我们需要的解析器 一般从Main方法中读取文档,却在解析器中处理文档,这就是所谓的事件驱动解析方法(解释为转载) ------------------------------------------------------------------------------------------------------------------------------------------------------ 解析器中的方法: 1.解析文档开头 1 @Override

在java中使用sax解析xml

旧街凉风 提交于 2020-01-02 18:44:00
在java中,原生解析xml文档的方式有两种,分别是:Dom解析和Sax解析 Dom解析功能强大,可增删改查,操作时会将xml文档以文档对象的方式读取到内存中,因此适用于小文档 Sax解析是从头到尾逐行逐个元素读取内容,修改较为不便,但适用于只读的大文档 本文主要讲解Sax解析,其余放在后面 Sax采用事件驱动的方式解析文档。简单点说,如同在电影院看电影一样,从头到尾看一遍就完了,不能回退(Dom可来来回回读取) 在看电影的过程中,每遇到一个情节,一段泪水,一次擦肩,你都会调动大脑和神经去接收或处理这些信息 同样,在Sax的解析过程中,读取到文档开头、结尾,元素的开头和结尾都会触发一些回调方法,你可以在这些回调方法中进行相应事件处理 这四个方法是: startDocument() 、 endDocument()、 startElement()、 endElement 此外,光读取到节点处是不够的,我们还需要 characters() 方法来仔细处理元素内包含的内容 将这些回调方法集合起来,便形成了一个类,这个类也就是我们需要的触发器 一般从Main方法中读取文档,却在触发器中处理文档,这就是所谓的事件驱动解析方法 如上图,在触发器中,首先开始读取文档,然后开始逐个解析元素,每个元素中的内容会返回到characters()方法 接着结束元素读取,所有元素读取完后,结束文档解析