studentInfoxml
<?xml version= encoding=gb?>
<student>
<person age=><!如果没有age属性默认的为>
<name>崔卫兵</name>
<college>PC学院</college>
<telephone></telephone>
<notes>男年生硕士现就读于北京邮电大学</notes>
</person>
<person>
<name>cwb</name>
<college leader=leader>PC学院</college><!如果没有leader属性默
认的为leader>
<telephone></telephone>
<notes>男年生硕士现就读于中国农业大学</notes>
</person>
<person age=>
<name>xxxxx</name>
<college leader=学院领导>xxx学院</college>
<telephone></telephone>
<notes>注视中注释中</notes>
</person>
</student>
SAXHandlerjava
package saxExample;
import javautilHashMap;
import orgxmlsax*;
import orgxmlsaxhelpersDefaultHandler;
/**
* 继承DefaultHandler类用SAX实现对xml的遍历
* @author cuiweibing
* @since
*/
public class SAXHandler
extends DefaultHandler {
//存放所有的节点(这里的节点等于原来的节点+编号)以及它所对应的值
private HashMap<StringString> hashMap = new HashMap<StringString>();
//目前的节点
private String currentElement = null;
//目前节点所对应的值
private String currentValue = null;
//用于节点编号(具体到person)
private static int i=;
public HashMap getHashMap() {
return hashMap;
}
public void characters(char[] ch int start int length) throws SAXException {
//取出目前节点对应的值
currentValue = new String(ch start length);
}
public void startElement(String uri String localName String qName
Attributes attr) throws SAXException {
if(qNameequalsIgnoreCase(student)){
//currentElement= ;
}else if (qNameequalsIgnoreCase(person)){
i++;
//currentElement= ;
String age=attrgetValue(age);
if(age!=null){
hashMapput(qName+age+i age);
}else{
hashMapput(qName+age+i );
}
}else if (qNameequalsIgnoreCase(college)){
currentElement= qName;
String leader=attrgetValue(leader);
if(leader!=null){
hashMapput(qName+leader+i leader);
}else{
hashMapput(qName+leader+i leader);
}
}else{
currentElement= qName;
}
}
public void endElement(String uri String localName String qName) throws SAXException {
if (qNameequalsIgnoreCase(student)){
// hashMapput(currentElement currentValue);
}else if (qNameequalsIgnoreCase(person)){
}else{
currentElement+=i;
hashMapput(currentElement currentValue);
}
}
}
TestSAXHandlerjava
package saxExample;
import javaioFile;
import javautilHashMap;
import javaxxmlparsersSAXParserFactory;
import javaxxmlparsersSAXParser;
/**
* 解析主类
* @author cuiweibing
* @since
*/
public class TestSAXHandler {
public TestSAXHandler() {
}
public static void main(String[] args) {
try{
//初始化与解析
SAXHandler handler = new SAXHandler();
SAXParserFactory saxparserfactory = SAXParserFactorynewInstance();
SAXParser saxparser = saxparserfactorynewSAXParser();
saxparserparse(new File(studentInfoxml) handler);
//解析完后获取解析信息
HashMap hashMap = handlergetHashMap();
Systemoutprintln(姓名\t年龄\t学院\t学院领导\t电话\t\t备注);
for(int i=;i<hashMapsize();i+=){
int j=i/;
Systemoutprint(hashMapget(name+j)+\t);
Systemoutprint(hashMapget(personage+j)+\t);
Systemoutprint(hashMapget(college+j)+\t);
Systemoutprint(hashMapget(collegeleader+j)+\t);
Systemoutprint(hashMapget(telephone+j)+\t);
Systemoutprintln(hashMapget(notes+j)+\t);
}
}catch(Exception ex){
exprintStackTrace();
}
}
}