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

最新文章

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

热门文章

  1. 用Vue来实现音乐播放器(10):Scroll组件的抽象和应用
  2. pycharm中git配置(coding.net为例)
  3. Eclipse Java工程转为Web工程步骤
  4. Delphi XE2 之 FireMonkey 入门(15) - 滤镜: 获取滤镜信息
  5. Babel编译:动态计算的属性名
  6. python批量下载验证码,用来做验证码处理
  7. 多线程07-Monitor.TryEnter
  8. using 用法拾忆
  9. HDU 6649 Data Structure Problem(凸包+平衡树)
  10. MySQL里null与空值的辨析