Android之SAX解析XML文件
2011-08-12 14:45
274 查看
1>先编写一个XML文件。
这个没什么说的,就是个xml
2>然后先写业务层Service层。
3>JUnit测试一下
当然写JUnit的时候别忘记添加支持
4>测试成功
<?xml version="1.0" encoding="utf-8"?> <persons> <person id="1"> <name>duantianlang</name> <age>23</age> </person> <person id="2"> <name>wangtianba</name> <age>33</age> </person> </persons>
这个没什么说的,就是个xml
2>然后先写业务层Service层。
package com.duantl.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.duantl.domain.Person; /** * SAX解析XML * @author duantl * */ 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; } @Override public void startDocument() throws SAXException { persons = new ArrayList<Person>(); } @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(0))); } tag = localName; } @Override public 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)); } } } @Override public void endElement(String uri, String localName, String qName) throws SAXException { if("person".equals(localName)){ persons.add(person); person = null; } tag = null; } } }
3>JUnit测试一下
当然写JUnit的时候别忘记添加支持
<uses-library android:name="android.test.runner" />
<instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.duantl.xmlsax" android:label="Tests for My App" />
package com.duantl.xmlsax; import java.io.InputStream; import java.util.List; import android.test.AndroidTestCase; import android.util.Log; import com.duantl.domain.Person; import com.duantl.service.SAXPersonService; 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("persons.xml"); List<Person> persons = service.getPersons(inStream); for(Person person : persons){ Log.i(TAG, person.toString()); } } }
4>测试成功
相关文章推荐
- android应用开发之利用SAX、DOM和Pull实现对XML文件的解析并进行单元测试
- android学习——使用SAX、DOM 和 PULL 解析xml文件,及使用pull生成xml文件
- Android学习札记10:用SAX解析XML文件时,当标签中出现换行符时可能出现读取内容为空的解决方法
- Android解析xml文件的方法:SAX
- android 用 SAX 解析xml文件!
- Android中利用SAX解析XML文件(转)
- android学习——使用SAX、DOM 和 PULL 解析xml文件,及使用pull生成xml文件
- Android解析自定义xml文件--Sax解析xml文件,测试demo(方案二)
- Android之SAX解析Xml文件实现
- Android 解析XML文件的三种方式 DOM,SAX,PULL
- android解析xml文件的方式(其二)SAX
- android 用 SAX 解析xml文件!
- 详解Android之解析XML文件三种方式(DOM,PULL,SAX)
- android_xml解析之 使用SAX读取XML文件
- Android----XML文件解析之SAX模式解析
- Android中使用SAX方式解析XML文件
- Android 个人学习笔记之---SAX解析XML文件(有一个坑爹的问题)
- android平台中解析xml文件:SAX、PULL
- android如何使用DOM和SAXParserFactory来解析XML文件
- android之sax解析xml文件