package com.fourinone; import java.util.*; import org.xml.sax.*; import org.xml.sax.helpers.DefaultHandler; public class XmlCallback extends DefaultHandler { private boolean textFlag = false; private ArrayList propsAl; private Properties curProps; private String curKey; private String PROPSROW_DESC; private String KEY_DESC; private String curPROPSROW_DESC; private String curKEY_DESC; public XmlCallback() { } public void startDocument() throws SAXException { //LogUtil.fine("start parse xml"); } public void startElement(String uri, String sName, String qName, Attributes attrs) { if(qName.equals("PROPSTABLE")) { //LogUtil.fine(attrs.getValue("DESC")); propsAl = new ArrayList(); } else if(qName.equals("PROPSROW")) { curPROPSROW_DESC = attrs.getValue("DESC"); curProps = new Properties(); } else { //LogUtil.fine(qName); curKEY_DESC = attrs.getValue("DESC"); curKey = qName; textFlag = true; } } public void characters(char[] data, int start, int length) { String content = new String(data, start, length); if(textFlag) { //LogUtil.fine(content); if(KEY_DESC==null||(curKEY_DESC!=null&&curKEY_DESC.equals(KEY_DESC))) curProps.put(curKey, content.trim()); } } public void endElement(String uri, String sName, String qName) { if(qName.equals("PROPSTABLE")) { } else if(qName.equals("PROPSROW")) { if(PROPSROW_DESC==null||(curPROPSROW_DESC!=null&&curPROPSROW_DESC.equals(PROPSROW_DESC))) propsAl.add(curProps); } else { //LogUtil.fine("/"+qName); textFlag = false; } } public void endDocument() throws SAXException { //LogUtil.fine("end parse xml"); } public ArrayList getPropsAl() { return propsAl; } public void setPROPSROW_DESC(String PROPSROW_DESC) { this.PROPSROW_DESC = PROPSROW_DESC; } public void setKEY_DESC(String KEY_DESC) { this.KEY_DESC = KEY_DESC; } }