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); } } }
|