SAX解析xml文件实例

编写一个books.xml文件

<?xml version="1.0" encoding="gb2312" ?>
- < books >
- < book isbn =" 7506342605 ">
< name > 《济公游记》 </ name >
    
< price > 80 </ price >
     
< author > 郭小亭 </ author >
    
< year > 南宋 </ year >
  
</ book >
- < book isbn =" 7506342606 ">
< name > 小张游记 </ name >
    
< price > 80 </ price >
     
< author > 小张 </ author >
    
< year > 南宋 </ year >
  
</ book >
- < book isbn =" 7506342607 ">
< name > 射雕英雄传 </ name >
    
< price > 80 </ price >
     
< author > 刘鑫 </ author >
    
< year > 南宋 </ year >
  
</ book >
- < book isbn =" 7506342608 ">
< name > 金瓶梅 </ name >
    
< price > 89 </ price >
     
< author > 陈智 </ author >
    
< year > 南宋 </ year >
  
</ book >
</ books >

然后定义一个工具类MySax.java

import java.io.File;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class MySax extends DefaultHandler {
private String qName;
private boolean tag;
public static void main(String[] args) throws Exception {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
MySax m = new MySax();
parser.parse(new File("thinkmore/books.xml"),m);
}
public void startDocument() throws SAXException {
}
public void startElement(String uri,String localName,String qName,
Attributes attributes) throws SAXException {
if(qName.equals("book")){
System.out.print(attributes.getValue("isbn")+"\t");
}
this.qName=qName;
this.tag=true;

}

实现类TestSax.java

import java.io.File;
import java.util.LinkedList;

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

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

public class TestSax extends DefaultHandler {
private String qName;
private boolean tag;
private LinkedList<Book> list= new LinkedList<Book>();
public static void main(String[] args) throws Exception {
SAXParserFactory factory=SAXParserFactory.newInstance();
SAXParser parser=factory.newSAXParser();
TestSax handler=new TestSax();
parser.parse(new File("thinkmore/books.xml"),handler);
}
@Override
public void startDocument() throws SAXException {
}
@Override
public void characters(char ch[],int start,int length)
throws SAXException {
String str=new String(ch,start,length);

if(this.qName.equals("price")&&tag){
System.out.print(str+"\t");
}
if(this.qName.equals("name")&&tag){
System.out.print(str+"\t");
}
if(this.qName.equals("author")&&tag){
System.out.print(str+"\t");
}
if(this.qName.equals("year")&&tag){
System.out.print(str+"\t");
}
}
@Override
public void startElement(String uri,
Attributes attributes) throws SAXException {
if(qName.equals("book")){
System.out.print(attributes.getValue("isbn")+"\t");
}
this.tag=true;
this.qName=qName;

}
@Override
public void endElement(String uri,String qName2)
throws SAXException {
if(qName2.equals("book")){
System.out.println();
}
this.tag=false;
}
@Override
public void endDocument() throws SAXException {

}
}

public void characters(char ch[],int length) throws SAXException { String str = new String(ch,length); if(this.qName.equals("name")){ System.out.print(str+"\t"); } if(this.qName.equals("price")){ System.out.print(str+"\t"); } if(this.qName.equals("author")){ System.out.print(str+"\t"); } if(this.qName.equals("year")){ System.out.print(str+"\t"); } } public void endElement(String uri,String qName) throws SAXException { if(this.qName.equals("book")){ System.out.println(); } this.tag=false; } public void endDocument() throws SAXException { } }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇