2007-08-10

使用Java自带SAX工具解析XML

来源: 兰苹果 作者:佚名 评论 0 条
 

studentInfo.xml


<?xml version="1.0" encoding="gb2312"?>
<student>
<person age="25"><!--假如没有age属性,默认的为20-->
<name>崔卫兵</name>
<college>PC学院</college>
<telephone>62354666</telephone>
<notes>男,1982年生,硕士,现就读于北京邮电大学</notes>
</person>
<person>
<name>cwb</name>
<college leader="leader1">PC学院</college><!--假如没有leader属性,默

认的为leader-->
<telephone>62358888</telephone>
<notes>男,1987年生,硕士,现就读于中国农业大学</notes>
</person>
<person age="45">
<name>xxxxx</name>
<college leader="学院领导">xxx学院</college>
<telephone>66666666</telephone>
<notes>注视中,注释中</notes>
</person>
</student>

SAXHandler.java


(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:C#中Dispose和Close的区别  
下一篇:c# MD5加密算法的实例
    评论加载中…

package saxExample;

import java.util.HashMap;
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;

/**
* 继续DefaultHandler类,用SAX实现对xml的遍历
* @author cuiweibing
* @since 2007.8.8
*/


public class SAXHandler
extends DefaultHandler {
//存放所有的节点(这里的节点等于原来的节点 编号)以及它所对应的值
private HashMap<String,String> hashMap = new HashMap<String,String>();
//目前的节点
private String currentElement = null;
//目前节点所对应的值
private String currentValue = null;
//用于节点编号(具体到person)
private static int i=-1;

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(qName.equalsIgnoreCase("student")){
//currentElement= "";
}else if (qName.equalsIgnoreCase("person")){
i ;
//currentElement= "";
String age=attr.getValue("age");
if(age!=null){
hashMap.put(qName "-age" i, age);
}else{
hashMap.put(qName "-age" i, "20");
}
}else if (qName.equalsIgnoreCase("college")){
currentElement= qName;
String leader=attr.getValue("leader");
if(leader!=null){
hashMap.put(qName "-leader" i, leader);
}else{
hashMap.put(qName "-leader" i, "leader");
}
}else{
currentElement= qName;
}

}

public void endElement(String uri, String localName, String qName) throws SAXException {
if (qName.equalsIgnoreCase("student")){
// hashMap.put(currentElement, currentValue);
}else if (qName.equalsIgnoreCase("person")){

}else{
currentElement =i;
hashMap.put(currentElement, currentValue);
}
}
}

共2页: 上一页 1 [2] 下一页
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号