Android 采用SAX解析XML内容 【学习记录】
2012-04-27 11:35
393 查看
测试所用的xml文件
Java 代码文件
<?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; } @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)) { //一组读取完毕就添加到person 对象当中 persons.add(person); person = null; } //读到 节点末尾 tag = null; } @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 对象 person = new Person(); person.setId(new Integer(attributes.getValue(0))); } //记录元素节点的 名称 tag = localName; } } }
相关文章推荐
- Android 采用Pull解析XML内容 【学习记录】
- Android 采用DOM解析XML内容 【学习记录】
- Android学习记录五(活动、服务、内容提供者、广播接收者)
- android学习记录(十八)---AppWidget显示内容随数据改变而更新
- Android 采用SharedPreferences读/写数据 【学习记录】
- Android 学习记录-ListView动态布局内容
- 无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)
- android学习记录(三)百度地图错误---手机显示只有一个框架,没有地图内容。
- android学习记录(三)百度地图错误---只有一个电话显示帧,没有地图内容。
- Android 学习记录-UDACITY项目0反馈
- android 关于ScrollView 的博客做记录学习
- android学习记录
- android style attribute 学习记录
- Android 4.0 触摸屏驱动调试记录 及 git patch相关内容
- Android学习记录(6)—将java中的多线程下载移植到Android中(即多线程下载在Android中的使用)③
- MOSS Search学习记录(五):利用元数据和规则搜索多个列表中指定范围的内容
- android:edittext学习记录
- Android Launch Mode的学习记录
- android中webview加载html,输入框不能输入内容问题记录
- 记录一下:Unity5.5.1和Android 交互学习以及遇到的问题