对于xml的解析,这里学习并演示使用SAXParser进行解析的样例。

使用此种方法无法解析"gb2312"编码的xml文件,因此,此处xml文件编码设置为"UTF-8"

1. person.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>王飞</name>
<college>理工大学</college>
<telephone>2663457</telephone>
<title>教授</title>
</person>

2.java相关代码

import java.io.File;
import java.io.FileReader;
import java.util.Hashtable;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class TestParse {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
try {
File file = new File("person.xml");
FileReader reader = new FileReader(file);
// 创建解析工厂实例
SAXParserFactory spf = SAXParserFactory.newInstance();
// 创建解析器
SAXParser sp = spf.newSAXParser();
// 创建处理类实例
SAXHandler handler = new SAXHandler();

// 解析
sp.parse(new InputSource(reader), handler);

// 此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。
Hashtable hashTable = handler.getTable();
// 输出数据
System.out.println("教师信息表");
System.out.println("姓名:"
+ (String) hashTable.get(new String("name")));
System.out.println("学院:"
+ (String) hashTable.get(new String("college")));
System.out.println("电话:"
+ (String) hashTable.get(new String("telephone")));
System.out.println("职称:"
+ (String) hashTable.get(new String("title")));
} catch (Exception e) {
System.out.println(e.getMessage());
}

}

}

// 自定义处理类
class SAXHandler extends DefaultHandler {
@SuppressWarnings("unchecked")
private Hashtable table = new Hashtable();
private String currentElement = null;
private String currentValue = null;

@SuppressWarnings("unchecked")
public Hashtable getTable() {
return table;
}

// 覆盖startElement方法,取出节点标签
public void startElement(String uri, String localName, String qName,
Attributes attributes) {
currentElement = qName;
}

// 覆盖characters方法,取出节点值
public void characters(char[] ch, int start, int length)
throws SAXException {
currentValue = new String(ch, start, length);
}

// 覆盖endElement方法,放入Hashtable
@SuppressWarnings("unchecked")
public void endElement(String uri, String localName, String qName)
throws SAXException {
if (currentElement.equals(qName))
table.put(currentElement, currentValue);
}

}

3.运行结果

SAXParser解析xml文件的更多相关文章

  1. JAVA使用SAX解析XML文件

    在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...

  2. SAX解析xml文件

    需要做一个银行名字的列表. 因为有很多,所以想到了用xml来保存,然后uongDAX解析. public class BankSelectActivity extends BaseActivity{ ...

  3. 用JAXP的SAX方式解析XML文件

    简单用JAXP的SAX方式(事件驱动)解析XML文件: 文件(1.XML) <?xml version="1.0" encoding="UTF-8" st ...

  4. 解析XML文件的几种常见操作方法—DOM/SAX/DOM4j

    解析XML文件的几种常见操作方法—DOM/SAX/DOM4j 一直想学点什么东西,有些浮躁,努力使自己静下心来看点东西,哪怕是回顾一下知识.看到了xml解析,目前我还没用到过.但多了解一下,加深点记忆 ...

  5. SAX方式解析XML文件实例

    books.XML文件: 书籍book.java实体类: public class Book { private String id; private String name; private Str ...

  6. cocos2d-x 3.0 使用Sax解析xml文件(中国显示器问题解决)

    今天是个好日子.我以为事情可以变得,明天是个好日子.打开门儿春风... 恩,听着歌写文档生活就是这么享受. 今天曾经的邻居大神突然在qq上赞了我一下,这让我异常激动啊.. 这还要从前前前几天说起,那会 ...

  7. 2017/4/25-SAX解析XML文件

    SAX解析XML 1.分析 SAX是按照XML文件的顺序执行,可以说是边扫描,边解析.所以无须将整个文件加载至内存中. 2.优点 1)占用内存少. 2)解析效率高. 3.缺点 1)只能进行读取. 2) ...

  8. 解析xml文件的四种方式

    什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没 ...

  9. JAVA解析XML文件(DOM,SAX,JDOM,DOM4j附代码实现)

    1.解析XML主要有四种方式 1.DOM方式解析XML(与平台无关,JAVA提供,一次性加载XML文件内容,形成树结构,不适用于大文件) 2.SAX方式解析XML(基于事件驱动,逐条解析,适用于只处理 ...

随机推荐

  1. AJAX面试题都在这里

    AJAX常见面试题 什么是AJAX,为什么要使用Ajax AJAX是"Asynchronous JavaScript and XML"的缩写.他是指一种创建交互式网页应用的网页开发 ...

  2. ES6,数组遍历

    ES6提供了entries(),keys(),values()方法返回数组的遍历器,对于遍历器(Iterator)可以使用for...of进行便利,也可是使用entries()返回的遍历器Iterat ...

  3. HAProxy+Nginx 负载均衡

    一.什么是HAProxy HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点, ...

  4. Java基础点滴

    1. 关于interface的定义 [修饰符] interface 接口名 [extends 父接口名列表]{ [public] [static] [final] 常量;[public] [abstr ...

  5. PHP7的新功能

    [转自:http://www.yiibai.com/php7/ ]   [PHP7标量类型声明] 在PHP7,一个新的功能,标量类型声明已被引入.标量类型声明有两种选择方式 - 强制方式- 强制性是默 ...

  6. 洛谷P4014 分配问题【最小/大费用流】题解+AC代码

    洛谷P4014 分配问题[最小/大费用流]题解+AC代码 题目描述 有 n 件工作要分配给 n 个人做.第 i 个人做第 j 件工作产生的效益为c ij. 试设计一个将 n 件工作分配给 n 个人做的 ...

  7. 微信小程序Md5加密(utf-8汉字无影响)

    微信小程序不让使用第三方jqMD5 只好改原生js咯 废话不多说直接贴代码 其实就是将原生function调用改为 module.exports = md5; 文中 红色标注 使用方法 将md5.js ...

  8. Window Server 布署 WCF 服务 , 权限配置问题

    起因: 客户服务器运行环境要求提高安全性,建议数据连接串采取 加密措施 ,或改用 Window 验证 连接数据库服务 .于是我们打算选择后着,将后台服务(Window Server)数据库连接串调整为 ...

  9. 如何让div水平居中呢?

    一百度div居中,多数都是一个答案,但是有时候这种方法并不是万能的...不废话,将我知道的方法都列举一下好了,随时更新. 1.设置width值,指定margin-left和margin-right为a ...

  10. $.ajax的一些坑啊

    1.如果发送ajax返回的数据为json务必设置其 Content-Type:application/json;charset=UTF-8 不然会导致其success:function(data)中的 ...