一、xml文件如下:
<?xml version="1.0" encoding="GBK"?> <person> <name>王小明</name> <college>信息学院</college> <telephone>6258113</telephone> <notes>男,1955 年生,博士,95 年调入海南大学</notes> </person>
二、SAXHandler 类如下:
import java.util.Hashtable;
import org.xml.sax.AttributeList;
import org.xml.sax.HandlerBase;
import org.xml.sax.SAXException;
public class SAXHandler extends HandlerBase{
private Hashtable table = new Hashtable();
private String currnetElement = null;
private String currentValue = null;
public void setTable(Hashtable table){
this.table = table;
}
public Hashtable getTable(){
return this.table;
}
public void startElement(String tag,AttributeList attrs) throws SAXException{
this.currnetElement = tag;
}
public void characters(char[] ch,int start,int length) throws SAXException{
this.currentValue = new String(ch,start,length);
}
public void endElement(String name) throws SAXException{
if(this.currnetElement.equals(name)){
table.put(this.currnetElement, this.currentValue);
}
}
}
三、TestSAXHadnler 代码如下:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Hashtable;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.InputSource;
import org.xml.sax.Parser;
import org.xml.sax.SAXException;
public class TestSAXHadnler {
public static void main(String[] args) {
Parser parser;
try {
File file = new File("E:\\people.xml");
FileReader reader = new FileReader(file);
SAXParserFactory sfp = SAXParserFactory.newInstance();
SAXParser sp = sfp.newSAXParser();
SAXHandler handler = new SAXHandler();
sp.parse(new InputSource(reader), handler);
Hashtable hashTable = handler.getTable();
System.out.println(hashTable.get(new String("name")));
System.out.println(hashTable.get(new String("college")));
System.out.println(hashTable.get(new String("telephone")));
System.out.println(hashTable.get(new String("notes")));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}catch(IOException ioe){
ioe.printStackTrace();
}
}
}
四、执行结果如下:
王小明
信息学院
6258113
男,1955 年生,博士,95 年调入海南大学