Android之SAX解析笔记
2024-09-05 10:12:40
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
最新文章
- java ObjectOutputStream
- 手机端 zepto tap事件穿透
- 非常好的Java反射例子
- Intent的简介以及属性详解
- C#生成验证码实例
- [C++]Hello C++
- Mysql 基于日志点的主从复制(实操)
- 【转】String字符串相加的问题
- AI学习---数据IO操作&;神经网络基础
- js关闭当前页
- Liferay7 BPM门户开发之7: Activiti中的重要概念和主要数据库结构
- [svc]linux的ip命令操作接口和路由表
- python3下全自动快速度在线安装所有插件
- Vue + Element UI 实现权限管理系统 前端篇(八):管理应用状态
- [原][OSG][osgBullet][osgworks][bullet]编译osgBullet尝试物理引擎
- 进程间通信-Queue
- WPF画辐射图
- 有关Hadoop的六大误解
- (webapp)微信和safri 对于html5 部分功能不兼容,多选或单选下拉框去除边框无效果。
- js学习笔记21----表格操作