package com.banking.xc.utils.xml; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; import com.banking.xc.entity.Person; /* <?xml version="1.0" encoding="utf-8"?> <channel> <item id="0" url="http://www.baidu.com">百度</item> <item id="1" url="http://www.qq.com">腾讯</item> <item id="2" url="http://www.sina.com.cn">新浪</item> <item id="3" url="http://www.taobao.com">淘宝</item> </channel> */ import com.banking.xc.utils.xml.frame.XmlParseHandler; import com.banking.xc.utils.xml.frame.XmlParseListener; public class XMLTestHandler extends XmlParseHandler { public XMLTestHandler(XmlParseListener xmlParseListener,InputStream inputStream) { super(xmlParseListener, null); //创建之后立即就会执行readXml /* try { readXml(inputStream); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); xmlParseListener.onParseError(); }*/ } private List<Person> persons; private Person person; private String preTag; public List<Person> getPersons() { return persons; } /* * 接收文档的开始的通知。 */ @Override public void startDocument() throws SAXException { persons = new ArrayList<Person>(); } /* * 接收字符数据的通知。 */ @Override public void characters(char[] ch, int start, int length) throws SAXException { if(person!=null){ String data = new String(ch,start,length); if("name".equals(preTag)){ person.setName(data); }else if ("age".equals(preTag)){ person.setAge(new Short(data)); } } } /* * 接收元素开始的通知。 */ @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if("person".equals(localName)){ person = new Person(); person.setId(new Integer(attributes.getValue("", "id"))); } preTag = localName; } /* * 接收文档的结尾的通知。 */ @Override public void endElement(String uri, String localName, String qName) throws SAXException { if("person".equals(localName)&&person!=null){ persons.add(person); person = null; } preTag = null; } @Override public void cancelParse() { // TODO Auto-generated method stub } @Override public Object getObjectWhenEnd() { // TODO Auto-generated method stub return this.getPersons(); } @Override public void destroy() { // TODO Auto-generated method stub } }