package com.cn.service; 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.cn.domain.Persion; /**** * 采用SAX解析XML * * ****/ public class SAXPersionService { public List<Persion> getPersino(InputStream is)throws Exception{ SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); PersionHandler handler = new PersionHandler(); parser.parse(is, handler); return handler.getList(); } private final class PersionHandler extends DefaultHandler{ private List<Persion> list = null; private Persion persion; private String tag; public List<Persion> getList() { return list; } @Override public void startDocument() throws SAXException { list = new ArrayList<Persion>(); } @Override public void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException { if("person".equals(localName)){ persion = new Persion(); persion.setId(Integer.parseInt(attributes.getValue(0))); } tag = localName; } @Override public void characters(char[] ch, int start, int length)throws SAXException { if(tag != null){ String textdata = new String(ch,start,length); if("name".equals(tag)){ persion.setName(textdata); }else if("age".equals(tag)){ persion.setAge(Short.parseShort(textdata)); } } } @Override public void endElement(String uri, String localName, String qName)throws SAXException { tag = null; if("person".equals(localName)){ list.add(persion); persion = null; } } } } 下面是类Persion的定义: package com.cn.domain; public class Persion { private int id; private String name; private short age; public Persion(){ } public Persion(int id, String name, short age) { super(); this.id = id; this.name = name; this.age = age; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public short getAge() { return age; } public void setAge(short age) { this.age = age; } @Override public String toString() { return "Persion [age=" + age + ", id=" + id + ", name=" + name + "]"; } }?