books.xml:

<?xml version="1.0" encoding="utf-8"?>
<books>
<book id="12" code="a">
<name>thinking in java</name>
<price>85.5</price>
</book>
<book id="15" code="b">
<name>Spring in Action</name>
<price>39.0</price>
</book>
</books>

MyContentHandler.java:

package com.example.xmlparse;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler; public class MyContentHandler extends DefaultHandler {
private String name;
private String price;
private String tagName; @Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
System.out.println(".............startDocument.............");
} @Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
System.out.println(".............endDocument.............");
} @Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
System.out.println(".............startElement.............");
tagName = localName;
if(localName.equals("book")) {
// 获取标签的全部属性
for(int i=0; i<attributes.getLength(); i++) {
System.out.println(attributes.getLocalName(i) + " = " + attributes.getValue(i));
}
}
} @Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
System.out.println(".............endElement.............");
tagName = "";
if(localName.equals("book")) {
this.printout();
}
} @Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
System.out.println(".............characters.............");
System.out.println(tagName);
if(tagName.equals("name")) {
name = new String(ch, start, length);
}else if(tagName.equals("price")) {
price = new String(ch, start, length);
}
} private void printout() {
System.out.println("name:" + name);
System.out.println("price:" + price);
}
}

执行代码结果:

.............startDocument.............
.............startElement.............
.............characters.............
books
.............characters.............
books
.............startElement.............
id = 12
code = a
.............characters.............
book
.............characters.............
book
.............startElement.............
.............characters.............
name
.............endElement.............
.............characters.............
.............characters.............
.............startElement.............
.............characters.............
price
.............endElement.............
.............characters.............
.............characters.............
.............endElement.............
name:thinking in java
price:85.5
.............characters.............
.............characters.............
.............startElement.............
id = 15
code = b
.............characters.............
book
.............characters.............
book
.............startElement.............
.............characters.............
name
.............endElement.............
.............characters.............
.............characters.............
.............startElement.............
.............characters.............
price
.............endElement.............
.............characters.............
.............characters.............
.............endElement.............
name:Spring in Action
price:39.0
.............characters.............
.............endElement.............
.............endDocument.............

注意:

XML报文中行尾的\n跟行首的\t都会调用characters

Android之SAX解析笔记的更多相关文章

  1. Android之SAX解析XML

    一.SAX解析方法介绍 SAX(Simple API for XML)是一个解析速度快并且占用内存少的XML解析器,非常适合用于Android等移动设备. SAX解析器是一种基于事件的解析器,事件驱动 ...

  2. Android使用SAX解析XML(4)

    util.java文件如下: package com.hzhi.my_sax; import java.io.IOException; import java.io.InputStream; impo ...

  3. Android使用SAX解析xml

    一.理论准备     SAX采用事件驱动机制来解析XML文档,每当SAX解析器发现文档开始.元素开始.文本.元素结束.文档结束等事件时,就会向外发送一次事件,而开发者则可以通过编写事件监听器处理这些事 ...

  4. Android使用SAX解析XML(1)

    可扩展标记语言XML是一种数据交换格式,允许用户自己定义,适合Web传输,能提供独立于程序的数据.XML在Android中也有广泛的应用,Android解析XML的方法有很多,本文介绍使用SAX(Si ...

  5. Android使用SAX解析XML(5)

    parse_handler.java文件: package com.hzhi.my_sax; import org.xml.sax.Attributes; import org.xml.sax.SAX ...

  6. Android使用SAX解析XML(3)

    主界面MainActivity.java: package com.hzhi.my_sax; import java.util.ArrayList; import android.os.Bundle; ...

  7. Android使用SAX解析XML(6)

    应用截图: (1)开始运行时 (2)选择学院 (3)选择专业 (4)选择班级 (5)选择班级的详细信息 本文参考了<Android平台开发之旅>.

  8. Android使用SAX解析XML(2)

    school类包含了一个major列表,可以增加该列表的元素,以及返回该列表,还实现了Parcelable.Creator接口. package com.hzhi.my_sax; import jav ...

  9. Android XML文档解析(一)——SAX解析

    ---------------------------------------------------------------------------------------------------- ...

随机推荐

  1. 【HTML】<!DOCTYPE html>作用

    1.定义: DOCTYPE标签是一种标准通用标记语言的文档类型声明,它的目的是要告诉标准通用标记语言解析器,它应该使用什么样的文档类型定义(DTD)来解析文档. <!DOCTYPE> 声明 ...

  2. base64加密小案例

    python终端下: import base64 >>> dict='{"name":"tom"}' >>> dict.en ...

  3. Openstack_通用技术_RPC 远程异步调用

    目录 目录 RPC 一个通过 HTTP Request 调用操作函数的 RPC 实现样例 环境 接收 HTTP Request RPC 调用具体的操作函数 测试 RPC RPC: 同一个项目内的不同服 ...

  4. Swiper轮播隐藏再显示后不动

    公告用Swiper轮播方式,在某些不需要显示公告的页面进行隐藏,在需要展示公告的页面进行显示时候,公告不能正常轮播,在条件里加入重新设置轮播方法等网上的一些方法仍然不行,最后解决方法: this.my ...

  5. C#之委托(二)

    其实在上一篇委托(一)中,创建委托还是太繁琐了点.代码量过多,可能会妨碍我们对代码和逻辑的理解.有些时候可能处理逻辑的代码都笔声明委托的代码要少,这就不可避免的增加了重复代码的量.所以在c#2中极大的 ...

  6. vue项目 Request Payload改成Form Data

    vue项目中提交表单时,请求参数是Request Payload时在main.js中加 axios.defaults.headers.post['Content-Type'] = 'applicati ...

  7. Hadoop Map/Reduce

    Hadoop Map/Reduce是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集.一个Map/Reduce ...

  8. HDU-3665 Seaside

    XiaoY is living in a big city, there are N towns in it and some towns near the sea. All these towns ...

  9. Feign负载均衡

    Feign是一个声明式的Web Service客户端,比Ribbon好用,默认也是轮巡.我们只需要使用Feign创建一个接口,并用注解就好了.如果你基于spring cloud发布一个接口,实际上就是 ...

  10. 显式Mapping设置与常见参数介绍

    原文:显式Mapping设置与常见参数介绍 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/ ...