sax解析xml文件(一)
来源:互联网 发布:上古卷轴5脸部数据导入 编辑:程序博客网 时间:2024/06/05 07:33
xml一种格式严谨,通用,表述数据良好的语言,它有存储数据的功能,这一点和数据库相似.
dom和sax是两种不同的解析xml文件的机制.在解析大型xml文件时,宜选用sax技术.
下面以判断users.xml文件中,是否存在id 为"003"的用户为例,简要介绍一下sax技术.
首先准备一个xml文件.usrs.xml 代码如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <users>
- <user id="001">
- <username>james</username>
- <password>james</password>
- </user>
- <user id="002">
- <username>adu</username>
- <password>adu</password>
- </user>
- <user id="003">
- <username>root</username>
- <password>root</password>
- </user><user id="004">
- <username>lishanli</username>
- <password>lishanli</password>
- </user>
- </users>
创建IsExistedUserHandler类,它派生自DefaultHandler.代码如下:
- package org.james.sax.util;
- import org.xml.sax.Attributes;
- import org.xml.sax.SAXException;
- import org.xml.sax.helpers.DefaultHandler;
- public class IsExistedUserHandler extends DefaultHandler {
- private String id;
- public IsExistedUserHandler(String id){
- this.id=id;
- }
- @Override
- public void startElement(String url, String localName, String qName,
- Attributes atts) throws SAXException {
- if(atts!=null){
- String userID=atts.getValue("id");
- if(userID!=null){
- if(userID.equals(id)){//当解析到id属性与构造函数中的id一样时,说明,存在该用户.
- throw new SAXException("己经存在该用户!");//由于,sax在解析过程中不能停止,此时却需要停止,可以采用/抛出异常的方式,终止解析.
- }
- }
- }
- }
- }
好了,现在写一个测试类,测试一下吧
- package org.james.sax;
- import java.io.IOException;
- import java.io.InputStream;
- import javax.xml.parsers.ParserConfigurationException;
- import javax.xml.parsers.SAXParser;
- import javax.xml.parsers.SAXParserFactory;
- import org.james.sax.util.IsExistedUserHandler;
- import org.xml.sax.SAXException;
- public class UserService {
- private static InputStream IN =UserService.class.getClassLoader().getResourceAsStream("users.xml");
- private SAXParser saxParser;
- public UserService(){
- try {
- saxParser=SAXParserFactory.newInstance().newSAXParser();
- } catch (ParserConfigurationException e) {
- e.printStackTrace();
- } catch (SAXException e) {
- e.printStackTrace();
- }
- }
- public boolean isExistedUser(String id){
- IsExistedUserHandler ieuh=new IsExistedUserHandler (id);
- try {
- saxParser.parse(IN, ieuh);
- } catch (SAXException e) {
- System.out.println(e.getMessage());
- return true;
- } catch (IOException e) {
- e.printStackTrace();
- }
- return false;
- }
- public static void main(String... args){
- UserService us=new UserService();
- System.out.println(us.isExistedUser("003"));
- }
- }
看看控制台输出什么?
-------------------------------
己经存在该用户!
true
--------------------
哈哈,说明成功了!
- sax解析xml文件(一)
- XML文件解析技术:SAX解析(一)
- xml文件解析-SAX
- sax解析xml文件
- SAX解析xml文件
- SAX解析XML文件
- SAX解析XML文件
- SAX解析XML文件
- SAX解析XML文件
- SAX解析xml文件
- SAX解析xml文件
- XML文件解析 sax
- SAX解析xml文件
- SAX解析XML文件
- SAX解析XML文件
- SAX解析XML文件
- sax 解析xml文件
- xml文件Sax解析
- javascript-------一张图片的不同背景
- 整理了一下MSDN中关于ASP.NET缓存机制的论述。
- JProfiler 5.1.4的使用方法
- #pragma指令--#pragma comment
- 教你认识汽车标志
- sax解析xml文件(一)
- Ajax中使用用户控件(有用到reponse.write) 汇出资料到excel
- bfd的文件格式识别
- Oracle多行转换成字符串方法总结
- linux设备驱动之控制台驱动
- [原创]再谈 unlocker 编程”探险”及工作原理
- 转一个关于VOFM的文章
- Oracle体系结构之数据库、表空间、实例
- 安装pear(转)