android使用sax解析xml

Android中使用SAX解析XML文件的编程方法 在上面的代码中,我们在MainActivity类中创建了一个XMLParserTask内部类,它扩展了AsyncTask类。在上述代码中,我们创建了一个名为XMLParser的类,它继承自DefaultHandler类,这是SAX解析器的基类。在上面的代码中,我们创建了一个XMLParser类,它继承自DefaultHandler类,这是SAX解析器的基类。通过使用SAX解析器,我们可以有效地解析大型XML文件,因为它在解析过程中一次只处理一个元素Android中使用SAX解析XML文件的编程方法。 阅读详情

随着技术的发展,现在的web已经和以前不同了。web已经逐渐像移动的方向倾斜,作为程序员的确应该拓展一下自己的知识层面。学习各方面的知识,今天就接着前几天的弄一下android的xml解析,这次就使用sax的方式解析xml.下面就一步一步的来做吧。

1.编写一个简单的xml

<?xml version="1.0" encoding="UTF-8"?>
<persons>
  <person id="01">
     <name>will</name>
     <age>21</age>
  </person>
  <person id="02">
     <name>will2</name>
     <age>22</age>
  </person>
</persons>


 

2.编写pojo类

package org.lxh.vo;

public class Person {
	
	private String id;
	private String name;
	private int age;

	

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	
	public String toString() {
		return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}
}


3.写一个解析xml的类

package org.lxh.impl;

import java.io.InputStream;
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.lxh.vo.Person;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import android.util.Log;

public class Parse {
	public List<Person> findAll(InputStream in) throws Exception {

		SAXParserFactory factory = SAXParserFactory.newInstance(); //创建解析工厂
		SAXParser parser = factory.newSAXParser();
		ParsePerson chuli = new ParsePerson();
		parser.parse(in, chuli);
		in.close(); //关闭输入流
		return chuli.getData();
	}
    //开始解析xml
	public class ParsePerson extends DefaultHandler {
		List<Person> all = null;
		Person person = null;
		String flag = null;

		public List<Person> getData() {
			return all;
		}

		public void startDocument() throws SAXException {

			all = new ArrayList<Person>();  //实例化集合
		}

		public void startElement(String uri, String localName, String qName,
				Attributes attributes) throws SAXException {
			if ("person".equals(localName)) {  
				person = new Person();
				person.setId(attributes.getValue(0)); //取得id的内容
			}
			flag = localName;  //记录上一个element
		}

		public void characters(char[] ch, int start, int length)
				throws SAXException {

			if (flag != null) {  //这样做取得的值就不会重复
				String data = new String(ch, start, length);

				if ("name".equals(flag)) {

					person.setName(data);
				}
				else if ("age".equals(flag)) {

					person.setAge(Integer.parseInt(data));
				}
			}
		}

		public void endElement(String uri, String localName, String qName)
				throws SAXException {

			if ("person".equals(localName)) {
				all.add(person);
				person = null;
			}
			flag = null;
		}

	}
}

 

4.进行单元测试


 


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="org.lxh.activity"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
       <uses-library android:name="android.test.runner"/>
        <activity android:name=".SaxParseXmlActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
    <instrumentation android:name="android.test.InstrumentationTestRunner" 
    android:targetPackage="org.lxh.activity" android:label="TestforMyApp"/>
    
    <uses-sdk android:minSdkVersion="8" />
   
</manifest> 


 

package org.lxh.activity;

import java.io.InputStream;
import java.util.Iterator;
import java.util.List;

import org.lxh.impl.Parse;
import org.lxh.vo.Person;

import android.test.AndroidTestCase;
import android.util.Log;

public class Test extends AndroidTestCase{
	public static final String tag="Test";
  public void testShuchu() throws Throwable{
	  //Log.i(tag, "123");
	  Parse p=new Parse();
	  InputStream in=getClass().getClassLoader().getResourceAsStream("persons.xml");
	
	 
		List<Person> all=p.findAll(in);
		  Log.i(tag, String.valueOf(all.size()));
		Iterator<Person> it=all.iterator();
		while(it.hasNext()){
			Person person=it.next();
			
			Log.i(tag, person.toString());
		}
		
	
  }
}


 

最后来看一下运行效果图,这里最好弄个filter,控制台就没那么乱了。

点击那个绿色的加号就OK了

不知道大家有没有不理解的地方,如果有可以写评论给我。

 

Android 使用 SAX 解析 XML 文件 SAX(Simple API for XML)是一种基于事件驱动的 XML 解析技术,在 Android 开发中,我们可以使用 SAX 解析器来解析 XML 文件。接下来,我们需要在 Android 应用程序中调用 SAX 解析器来解析 XML 文件。方法中,我们创建了一个 URL 对象来指定要解析的 XML 文件的位置。通过上述步骤,我们就可以在 Android 应用程序中使用 SAX 解析器来解析 XML 文件了。类中,我们可以重写一些方法来处理 XML 文件中的事件。在上面的代码中,我们使用。 阅读详情

相关推荐

Android XML数据解析实践:使用SAX解析器

本文还有配套的精品资源,点击获取 简介:本教程深入介绍Android平台下使用SAX解析XML数据的方法,强调其在处理大量数据时内存效率高的特点。通过实例化XML解析器,实现ContentHandler接口以及解析XML文件,本教程展示了如何高效集成XML数据到Android应用,并进行业务逻辑处理。源码项目同时涉及代码结构组织和性能优化,旨在通过实例帮助开发者提升XML处...

weixin_35677363的博客 1710

android 如何使用SAX解析XML

今天,简单讲讲android如何使用SAX解析XML 。 昨天,我看代码时,看到了解析xml文档的代码,是使用SAX解析XML。但是我却不会使用SAX,于是在网上查找资料,最终解决了问题。这里记录一下。 解析XML的方式有很多种,大家比较熟悉的可能就是DOM解析。 DOM(文件对象模型)解析:解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以根据DOM接口来操作这个树结

谢岩的博客 2494

android使用SAX解析xml

使用sax解析从网络上获取的xml文件

android中使用SAX解析xml(封装)

SAX具体怎么用就不说了,网上搜搜一大片。 第一步:建立公共抽象类BaseHandler package com.dc.handler; import java.io.StringReader; import java.util.HashMap; import java.util.Map; import javax.xml.parsers.SAXParser; import

gundumw100的专栏 1560

[Android]使用SAX解析XML文件

NULL 博文链接:https://z251257144.iteye.com/blog/1356394

图解凸函数与凹函数:别再被数学定义搞晕了!

本文通过图解和生活化类比,深入浅出地解释了凸函数与凹函数的数学定义及其与日常直觉的差异。文章详细介绍了凸函数的图像特征、数学定义(包括二阶导数判断)、在机器学习中的重要性,以及常见误区和实际应用中的判断技巧,帮助读者彻底理解这一关键数学概念。

weixin_29159441的博客 656

android用sax解析xml,详解android使用SAX解析XML文件

解析XML的方式有很多种,大家比较熟悉的可能就是DOM解析。DOM(文件对象模型)解析:解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以根据DOM接口来操作这个树结构了。优点:整个文档读入内存,方便操作:支持修改、删除和重现排列等多种功能。缺点:将整个文档读入内存中,保留了过多的不需要的节点,浪费内存和空间。使用场合:一旦读入文档,还需要多次对文档进行操作,并且在硬件资源充足的情况...

weixin_36202603的博客 418

SageMath下载与安装

SageMath的下载与安装

旺旺的碎冰冰~的博客 7495

Android安卓使用SAX方式解析xml

Android安卓使用SAX方式解析xml 修改activity_main.xml中代码,添加button控件,实现点击解析 <Buttonandroid:id="@+id/parser"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="解析"/> 2.新建MyHandler类继承DefaultHandler ...

qq_37196621的博客 384

STM32F411CEU6实战:用W25Q64存储多张图片,在240x240 LCD上轮播显示(附源码)

本文详细介绍了如何使用STM32F411CEU6通过SPI接口管理W25Q64 Flash中的多张图片,并在240x240 LCD上实现平滑轮播显示。内容涵盖硬件配置、图片存储方案设计、轮播系统实现及性能优化技巧,特别针对SPI传输优化和多图存储管理提供了实用解决方案。附源码,适合嵌入式开发者参考。

weixin_32025789的博客 308

PX4无人机实战:手把手教你用MAVROS实现Offboard模式(附避坑指南)

本文提供了一份详尽的PX4无人机Offboard模式实战指南,重点解析了如何通过MAVROS实现从仿真到实机的控制。内容涵盖硬件连接、串口权限设置、MAVROS配置、核心代码编写以及实机操作全流程,并附有详细的避坑指南和故障排查手册,帮助开发者快速掌握ROS与PX4飞控的集成开发。

weixin_29172201的博客 267

Android中使用SAX方式解析XML文件

在Android中解析XML文主要有三种方式,分别为Simple API for XML(SAX)、Document Object Model(DOM)和Android附带的pull解析器。在本篇文章中主要采用例子说明使用SAX方式解析XML文件。          SAX是一

Android-Idea 5541

优化翼型形状的遗传算法实现

在每一代种群中,通过计算每个个体的适应度值,选择具有较高适应度值的个体,并使用交叉和变异算子对它们进行操作,从而生成新的个体。具体而言,我们将采用一个参数化的翼型模型,其中包括几何设计变量,如角度、弯曲和厚度等,以及性能指标,如升阻比和扭矩等。总之,本文提供了一个基于遗传算法的优化方法,用于寻找最优的翼型形状,并提供MATLAB源代码。需要注意的是,上述代码中的objFunc函数是一个示例性质的目标函数,实际应用中需要根据具体的问题进行修改。1.初始化一个随机的种群,其中每个个体代表一个参数化的翼型模型。

与其临渊羡鱼,不如退而结网 517

Android解析XML方式(一)使用SAX解析

Android解析XML三种方式: 1、DOM (org.w3c.dom)文档对象模型方式,解析完的XML将生成一个树状结构的对象。 2、SAX (org.xml.sax) simpleAPI for XML,以事件的形式通知程序,对XML进行解析。 3、PULL (org.xmlpull.v1) 类似SAX方式,程序以"拉取"的方式对Xml进行解析。   本篇讲解一下SAX解析XML这

WILLIAM-HUAN 个人技术博客 3346

【WRF模拟】土地利用类型的确定:最大覆盖法/瓦片法

土地利用类型的确定:最大覆盖法/瓦片法

WW、forever的博客 1529

halcon与QT联合:(5.1)瓶盖检测以及QT界面搭建

halcon实现瓶盖检测与定位代码: dev_close_window() dev_open_window(0, 0, 1024, 1024, 'black', WindowHandle) list_image_files('C:/Users/TIMI/Desktop/picture/circle', 'default', [], ImageFiles) for J := 1 to 4 by 1 *read image read_image(halconImage, ImageFil

m0_37957160的博客 1044

安卓使用DOM,SAX,PULL解析xml,安卓写入xml文件

Xml简介 对Xml不太了解的同学可以看一下这篇Xml的简介:http://www.cnblogs.com/SkySoot/archive/2012/08/24/2654319.html DOM解析Xml Dom解析Xml的时候,会将Xml文件的所有内容以文件树的形式存储到内存中,然后用户通过使用DOM API遍历Xml树,检索需要的内容。 但是,因为它将文件树放在了内存中,如果文件较大的

YanRu的专栏 934

SFT看这一篇就够了!万字长文:监督微调(Supervised Fine-Tuning, SFT)技术全解析【从理论到实战】

大家好,我是大 F,深耕AI算法十余年,互联网大厂技术岗。分享AI算法干货、技术心得。欢迎关注,一起探索技术的无限可能!

大F子的智能小课 712

安卓解析XML文件系列1:使用SAX方式

HTTP数据组织方式: HTML方式、XML方式、JSON方式 XML称为可扩展标记语言,它与HTML一样,都是SGML(标准通用标记语言)。 Android中,解析XML数据的三种方式: 1.DOM(org.w3c.dom) "文档对象模型"方式,解析完的XML将生成一个树状结构的对象。 2.SAX(org.xml.sax) SimpleAPI for XML,以事件的形式

luoshiwutai的博客 729

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

android 使用SAX解析xml

android 提供了三种解析xml的方式,分别是sax,dom,pull, pull是android独有的,在以前Java学习中没有出现过,dom和sax java中一直使用,如dom4j就是使用的sax. 接下来我们学习sax在android系统中的学习。 第一步:我们

java 1041

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Android中使用SAX对XMl文件进行解析

在android中的xml的文件解析,一般有三种方法 sax,dom,pull; 不过一般使用最多的是sax技术;在Java中使用SAX技术解析XML文档      sax解析技术是解析速度很快,并且占用很小量的内存;sax解析的方法是进行事件驱动的方法,相对于dom技术必须要调用这个xml文档到内存中,他不需要整个xml文档,     按顺序进行解析,按要求把xml当如到内存中;当我们在解析

江清清的专栏 3467

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Android 使用SAX解析XML格式数据

SAX(Simple API for XML)是一种基于事件驱动的 XML 解析方式,适用于处理大规模 XML 文档。SAX 解析器不会将整个 XML 加载到内存中,而是逐行解析,因此在性能和内存占用方面优于 DOM 解析。

XHRK1的博客 601

Android中使用sax解析XML

在Android中使用XML解析数据是非常常见的一件事,但是使用那种方式比较好呢,因为基于Android开发的硬件毕竟性能一般有限,主要是手机和嵌入式设备。一般我们使用sax解析。速度比较快,也不大耗内存。当然负面影响也是有的,编码比较多,而且比较复杂些。下面我们来看一个例子: 首先我们实现一个xml的实体类,如下: //收藏...

weixin_33881753的博客 173

Android中使用SAX解析器解析XML文件

 在Android中解析XML文主要有三种方式,分别为Simple API for XML(SAX)、Document Object Model(DOM)和Android附带的pull解析器。下面首先介绍第一种SAX方式解析XML文件。SAX是一个解析速度非常快并且占用内存少的XML解析器,非常适合Android等移动设备。SAX解析XML文件采用事件驱动的方式进行,也就是说SAX是逐行扫描文件,

1786

Android中使用sax解析xml文件的方法

原文地址:http://www.jb51.net/article/36146.htm

a5597942的专栏 435
上一篇: 第一个webservice程序
下一篇: android使用pull的方式解析xml
青蛙小王子
博客等级 码龄16年 239粉丝 311原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值