SAXPersonService.java

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 cn.itcast.domain.Person;/** * 采用SAX解析XML内容 */public class SAXPersonService {public List<Person> getPersons(InputStream inStream) throws Throwable{SAXParserFactory factory = SAXParserFactory.newInstance();SAXParser parser = factory.newSAXParser();PersonParser personParser = new PersonParser();parser.parse(inStream, personParser);inStream.close();return personParser.getPersons();}private final class PersonParser extends DefaultHandler{private List<Person> persons = null;private String tag = null;private Person person = null;public List<Person> getPersons() {return persons;}@Overridepublic void startDocument() throws SAXException {persons = new ArrayList<Person>();}@Overridepublic 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(0)));}tag = localName;}@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {if(tag!=null){String data = new String(ch, start, length);//获取文本节点的数据if("name".equals(tag)){person.setName(data);}else if("age".equals(tag)){person.setAge(new Short(data));}}}@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {if("person".equals(localName)){persons.add(person);person = null;}tag = null;}}}

测试类PersonServiceTest.java

import java.io.BufferedWriter;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStreamWriter;import java.io.StringWriter;import java.util.ArrayList;import java.util.List;import cn.itcast.domain.Person;import cn.itcast.service.SAXPersonService;import android.content.Context;import android.test.AndroidTestCase;import android.util.Log;public class PersonServiceTest extends AndroidTestCase {private static final String TAG = "PersonServiceTest";public void testSAXGetPersons() throws Throwable{SAXPersonService service = new SAXPersonService();InputStream inStream = getClass().getClassLoader().getResourceAsStream("itcast.xml");List<Person> persons = service.getPersons(inStream);for(Person person : persons){Log.i(TAG, person.toString());    }}}



更多相关文章

  1. 自动输入文本效果—AutoCompleteTextView
  2. android studio自动提示文本框
  3. xmlpullparser解析
  4. android之转化inputstream为list
  5. android中解析xml文件的工具类XmlUtils
  6. Android之Init进程
  7. 【Xutils-框架 BitmapUtils】解析!!!!!!!!!!!!!!!!!!!!!!!!
  8. 解析xml数据
  9. Android上层怎样读写proc节点(示例)

随机推荐

  1. Android: Android Bluetooth
  2. Android根据文件路径使用File类获取文件
  3. Android Fresco图片处理库用法API英文原
  4. Android外设存储设备的访问及测试
  5. Android巧用DecorView实现对话框功能
  6. 【Android】如何让跑马灯跑起来-控件请求
  7. 【边做项目边学Android】小白会遇到的问
  8. Android是什么?
  9. 安卓xml文件中设置动画匀速旋转无效?
  10. Android - Android应用程序(Application)