public class saxHandler extends DefaultHandler { HashMap<String,String> map=null; List<HashMap<String,String>> list=null; String currentTag=null; String currentValue=null; String nodeName=null; public saxHandler(String nodeName) { this.nodeName = nodeName; } public List<HashMap<String, String>> getList() { return list; } @Override public void startDocument() throws SAXException { list=new ArrayList<HashMap<String,String>>(); } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if(qName.equals(nodeName)) { map=new HashMap<String,String>(); } if(map!=null && attributes!=null) { for(int i=0;i<attributes.getLength();i++) { map.put(attributes.getQName(i), attributes.getValue(i)); } } currentTag=qName; } @Override public void characters(char[] ch, int start, int length) throws SAXException { if(map!=null && currentTag!=null) currentValue=new String(ch,start,length); if(currentValue!=null && !currentValue.trim().equals("") && !currentValue.trim().equals("/n")) map.put(currentTag, currentValue); currentTag=null; currentValue=null; } @Override public void endElement(String uri, String localName, String qName) throws SAXException { if(qName.equals(nodeName)) { list.add(map); map=null; } } }
public class pullHandler { public static List<Dog> parserXml(InputStream inputStream,String encode) throws XmlPullParserException, IOException{ List<Dog> list = null; Dog dog =null; XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser parser = factory.newPullParser(); parser.setInput(inputStream, encode); int evenType = parser.getEventType(); while(evenType!=XmlPullParser.END_DOCUMENT) { switch (evenType) { case XmlPullParser.START_DOCUMENT: list = new ArrayList<Dog>(); break; case XmlPullParser.START_TAG: if (parser.getName().equals("dog")) { dog = new Dog(); dog.setId(parser.getAttributeValue(0)); }else if (parser.getName().equals("name")) { dog.setName(parser.nextText()); }else if (parser.getName().equals("color")) { dog.setColor(parser.nextText()); }else if (parser.getName().equals("age")) { dog.setAge(Integer.parseInt(parser.nextText())); } break; case XmlPullParser.END_TAG: if(parser.getName().equals("dog")) { list.add(dog); dog=null; } break; } evenType=parser.next(); } return list; } }