转载请注明出处:http://blog.csdn.net/droyon/article/details/9346657

Sax解析xml

以下是测试Demo

运行程序类

public class TestApplication extends Application{

private static final String LOG_TAG = "TestApplication";

@Override

public void onCreate() {

super.onCreate();

SaxForXml handler = null;

try {

String readXmlFile = "test_config.xml";

SAXParserFactory factory = SAXParserFactory.newInstance();//第一步

SAXParser parse = factory.newSAXParser();//第二步

XMLReader reader = parse.getXMLReader();//第三步

handler = new SaxForXml();

reader.setContentHandler(handler);//第四步

//第一种获得InputSource的方式

InputSource in = new InputSource(getResources().openRawResource(R.raw.test_config));

//AssetManager assetM = getResources().getAssets();//第二种获得InputSource

InputSource in = new InputSource(assetM.open("test_config1.xml"));//第五步

reader.parse(in);//第六步

} catch (ParserConfigurationException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SAXException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

ArrayList data = handler.getAllData();

for(StringObject stringObject : data){

Log.d(LOG_TAG, stringObject+"");

}

}

}

解析类:

package com.example.androidtest;

import java.util.ArrayList;

import org.xml.sax.Attributes;

import org.xml.sax.SAXException;

import org.xml.sax.helpers.DefaultHandler;

import android.util.Log;

public class SaxForXml extends DefaultHandler{

private static final String LOG_TAG = "SaxForXml";

private static final String sItem = "item_name";

private static final String sFolder = "folder_name";

private static final String sTagItem = "test_item";

private static final String sTagFolder = "test_folder";

private static ArrayList sAll = new ArrayList();

private static StringObject sStringObject;

@Override

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

throws SAXException {

super.characters(ch, start, length);

String temp = new String(ch, start, length);

Log.d(LOG_TAG, "characters temp is:"+temp+"..start is:"+start+"..length is:"+length);

if(sStringObject == null){

return;

}

sStringObject.setS4(temp);

}

@Override

public void endDocument() throws SAXException {

super.endDocument();

Log.d(LOG_TAG, "endDocument");

}

@Override

public void endElement(String uri, String localName, String qName)

throws SAXException {

super.endElement(uri, localName, qName);

Log.d(LOG_TAG, "endElement uri is:"+uri+"..localName is:"+localName+"..qName is:"+qName);

if(sStringObject == null){

return;

}

sAll.add(sStringObject);

sStringObject = null;

}

@Override

public void startDocument() throws SAXException {

super.startDocument();

Log.d(LOG_TAG, "startDocument");

}

@Override

public void startElement(String uri, String localName, String qName,

Attributes attributes) throws SAXException {

super.startElement(uri, localName, qName, attributes);

Log.d(LOG_TAG, "startElement uri is:"+uri+"..localName is:"+localName+".. qName is:"+qName+".. attributes is:"+attributes);

if(!sTagItem.equals(localName)&&!sTagFolder.equals(localName)){

return;

}

sStringObject = new StringObject();

sStringObject.setS1(localName);

String string2 = attributes.getLocalName(0);

String string3 = attributes.getValue(0);

Log.d(LOG_TAG, "startElemement string2 is:"+string2+"..String3 is:"+string3);

sStringObject.setS2(string2);

sStringObject.setS3(string3);

}

public static ArrayList getAllData(){

return sAll;

}

class StringObject{

String s1;

String s2;

String s3;

String s4;

public void setS1(String s1) {

this.s1 = s1;

}

public void setS2(String s2) {

this.s2 = s2;

}

public void setS3(String s3) {

this.s3 = s3;

}

public void setS4(String s4) {

this.s4 = s4;

}

@Override

public String toString() {

return "StringObject [s1=" + s1 + ", s2=" + s2 + ", s3=" + s3

+ ", s4=" + s4 + "]";

}

}

}

xml文件:

我们

都是

孩子

测试结果:

StringObject [s1=test_item, s2=item_name, s3=item1, s4=我们]

StringObject [s1=test_item, s2=item_name, s3=item2, s4=都是]

StringObject [s1=test_folder, s2=folder_name, s3=folder1, s4=好]

StringObject [s1=test_folder, s2=folder_name, s3=folder2, s4=孩子]

android xml解析demo,Android解析自定义xml文件--Sax解析xml文件,测试demo(方案二)...相关推荐

  1. 解析XML文件——SAX解析技术

    通常的文件等等都是以xml形式存储的,当我们要查看时就必须将他们解析出来.通常有nSimple API for XML(SAX) :nDocument Object Model(DOM)(不建议使用) ...

  2. java sax解析xml_【转】java使用sax解析xml文件

    从下面这个url搬运.http://hck.iteye.com/blog/1175762 不过程序略有改动. 关于sax(搬自百科) SAX,全称Simple API for XML,既是指一种接口, ...

  3. Android——浙理体育(飞翔的红蜻蜓)训练记录上传与查询测试DEMO解决方案

    解决方案 package io.shentuzhigang.demo.text;import io.shentuzhigang.demo.http.okhttp3.HttpClient; import ...

  4. android 如何使用SAX解析XML

    今天,简单讲讲android如何使用SAX解析XML . 昨天,我看代码时,看到了解析xml文档的代码,是使用SAX解析XML.但是我却不会使用SAX,于是在网上查找资料,最终解决了问题.这里记录一下 ...

  5. XML解析(一),SAX解析XML

    转载自  XML解析(一),SAX解析XML 一.概述  SAX,全称Simple API for XML,是一种以事件驱动的XMl API,是XML解析的一种新的替代方法,解析XML常用的还有DOM ...

  6. python 使用sax 解析xml 文件

    这里不是说xml 的所以如果xml 不了解,可以百度大致看下即可, SAX知识了解 SAX (simple API for XML )  有解析器和事件处理器 解析器负责读取XML文档,并向事件处理器 ...

  7. Java解析XML(DOM解析和SAX解析)

    前言:在程序中访问和操作XML文件一般有两种模型:DOM(文档对象模型)和流模型:在本篇文章中分别对应DOM解析和SAX解析. 目录 1 .DOM解析与SAX解析的相关知识点 1.1 DOM 1.2 ...

  8. python输出价目表-Python:使用基于事件驱动的SAX解析XML

    SAX的特点: 是基于事件的 API 在一个比 DOM 低的级别上操作 为您提供比 DOM 更多的控制 几乎总是比 DOM 更有效率 但不幸的是,需要比 DOM 更多的工作 基于对象和基于事件的接口 ...

  9. python中xml解析sax_python使用SAX解析xml

    python 标准库包含SAX解析器,SAX用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件 在python中使用sax方式处理xml要先引入xml.s ...

最新文章

  1. Python深度学习之搭建小型卷积神经网络(Kaggle网站Dogs-vs-Cats数据集)
  2. leetcode C++ 28. 实现 strStr() 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 need
  3. 图论(九)最小生成树-Kruskal算法
  4. 2018/Province_Java_A/2/星期一
  5. Android URLconnection
  6. 【详解】CSS阴影用法——Web前端系列学习笔记
  7. 收藏 | 深度学习图像分类任务中那些不得不看的技巧总结
  8. 痞子衡嵌入式:极易上手的可视化wxPython GUI构建工具(wxFormBuilder)
  9. Java 堆和栈的区别,还傻傻分不清?
  10. 牛客练习赛29 F 算式子
  11. byte[] 转化为 string 转化为汉字和字母
  12. QProcess解决无交互输入密码问题
  13. boot camp驱动下载以及对应机型版本查询
  14. 医学系统(一)医院常用的软件系统:PACS系统、HIS系统、RIS系统、LIS系统、CIS系统
  15. spring启动流程(一):启动流程概览
  16. hadoop错误DataXceiver error processing WRITE_BLOCK operation
  17. 本地搭建以太坊私有节点网络
  18. 《虎虎圆桌派》第一期全程回顾
  19. 计算机三级难度排行2019,2019计算机三级有用吗 计算机三级考试难不难
  20. 网货赢天下:新模式下蕴含的新机遇

热门文章

  1. 三维重建_快速分类–三向和双枢轴
  2. @transaction 提交事务_Kafka 事务实现原理
  3. 解决if-else的另一种姿势:Map + 函数式接口方法!
  4. 开源监控系统 Prometheus 入门
  5. 从内部自用到对外服务,配置管理的演进和设计优化实践
  6. python错误代码提示手册_python学习手册笔记——33.异常编码细节
  7. 检测到磁盘可能为uefi引导_重装系统win10提示磁盘布局不受UEFI固件支持怎么办...
  8. centos 7 如何验证oracle安装成功_linux下Oracle数据的安装详解
  9. mxnet迁移学习 注释版
  10. 一文读懂GAN, pix2pix, CycleGAN和pix2pixHD