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

react-window 大数据列表和表格数据渲染组件之虚拟滚动

ReactWindow是一个高性能的React虚拟滚动组件库,专门用于高效渲染大型列表和表格数据。它通过“窗口化”技术,仅渲染用户可见区域的内容,大幅提升性能并减少内存消耗。主要特点包括:支持固定/可变大小列表项、多种布局类型(垂直/水平/网格)、轻量级设计(不足5KB)以及平滑的滚动体验。相比传统渲染方式,它能轻松处理成千上万条数据,并提供自动滚动、自适应容器大小等高级功能。与同类库相比,ReactWindow具有更简洁的API和更优的性能表现,是处理大数据量渲染场景的理想选择。

前端开发-前端技术分享 1137

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

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

weixin_36202603的博客 418

在macOS上使用GitHub的超详细指南

GitHub:免费的远程仓库,可用来托管自己的开源项目。它利用了Git强大的克隆和分支功能,让我们参与别人的开源项目和让别人参与自己的开源项目变得简单高效。

Mars的博客 3391

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

大陆毫米波雷达ARS408-21xx实战:从零搭建ROS环境下的目标检测与可视化

本文详细介绍了大陆毫米波雷达ARS408-21xx在ROS环境下的实战部署全流程。从硬件连接、CAN总线配置,到ROS驱动节点开发、CAN报文解析,再到RViz三维可视化实现,提供了完整的代码示例与调试技巧,帮助开发者快速搭建毫米波雷达目标检测与可视化系统。

open4的博客 633

AOI检测总误判?五大常见问题与实战解决方案

通过对图像质量、检测程序、外界干扰、算法优化以及设备维护和校准的全面把控,企业可以有效降低误判率,提升AOI检测的准确性和可靠性,为工业生产提供更有力的质量保障。表现描述:在AOI检测时,元器件字符因印刷颜色深浅、模糊或受到灰尘干扰等差异,再加上元件库参数未根据实际生产优化,会使系统误将合格元件判定为不合格,严重影响生产效益和产品质量。优化元件库:着重检测关键差异字符,如型号编码等关键信息,剔除不必要字符的检测项,减少干扰,专注于关键识别的准确性。检测时,根据物料信息动态更新检测参数,使系统适应物料变化。

ALeader_AOI的博客 3494

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

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

Android-Idea 5541

Linux中Hadoop 集群搭建

零、下载Hadoop: http://archive.cloudera.com/cdh5/cdh/5/?tdsourcetag=s_pctim_aiomsg 一、集群规划: 搭建的 hadoop 集群由 3 台服务器组成,分别叫做 master,salve1 和 slave2。其中 master 作为主节点,slave1 和 slave2 作为从节点。 二、网络配置: 1.查看 3 个节点的主机名...

白墨的小白博客 3992

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

用Navicat轻松管理魔兽世界私服数据库:修改IP、添加装备的实用技巧

本文详细介绍了如何使用Navicat管理魔兽世界私服数据库,包括修改服务器IP、添加自定义装备和调整角色属性等实用技巧。通过专业的SQL操作指南,帮助玩家轻松实现私服的高级定制,提升游戏体验。

fanta的博客 939

@transactional滥用导致数据源连接池耗尽问题

@transactional滥用导致数据源连接池耗尽问题

qq_43205267的博客 1201

安卓使用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

【漏洞复现】CVE-2024-44902 Thinkphp反序列化漏洞

Thinkphp v6.1.3至v8.0.4版本中存在反序列化漏洞,攻击者可利用此漏洞执行任意代码。

渗透之路,攻防之间皆学问 6709

安卓解析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

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

android 使用SAX解析xml

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

java 1041

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

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

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

江清清的专栏 3467

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

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、付费专栏及课程。

余额充值