Android 采用SAX解析XML内容 【学习记录】
16lz
2021-01-23
测试所用的xml文件
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?><persons><person id="24"><name>Danny</name><age>24</age></person><person id="23"><name>Kiki</name><age>23</age></person></persons>
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 com.android.mldn.domain.Person;/** * 采用SAX解析XML内容 * @author Mik * */public class SAXPersonService {public List<Person> getPersons(InputStream inStream)throws Throwable{//创建SAXParserFactory 实例SAXParserFactory factory = SAXParserFactory.newInstance();//得到 SAXParser 的一个解释器SAXParser parser = factory.newSAXParser();//实例化一个 PersonParser 该类实现了ContentHandler接口PersonParser personParser = new PersonParser();parser.parse(inStream, personParser);inStream.close();return personParser.getPersons();}//该类负责解析 xml 数据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 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)) {//一组读取完毕就添加到person 对象当中persons.add(person);person = null;}//读到 节点末尾tag = null;}@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 对象person = new Person();person.setId(new Integer(attributes.getValue(0)));}//记录元素节点的 名称tag = localName;}}}
更多相关文章
- android 从Activity 获取 rootView 根节点
- Android Action使用实例
- Android基本游戏循环实例分析
- Android应用程序组件Content Provider应用实例(5)
- Android 进程间通信 实例分析
- AIDL简单实例
- Appium Android 元素定位方法 原生+H5
- Spark实例-每天每个搜索词用户访问
- android调用web service(cxf)实例