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