pull 解析XML 文件
Posted 一颗神豆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pull 解析XML 文件相关的知识,希望对你有一定的参考价值。
pull解析的特点
- 事件驱动机制来解析
- 当解析到一个节点,会自动停止,不会往下继续解析,好处 :很好能够控制流程
- android默认采用pull解析
pull解析的事件类型
- start_document :开始文档事件 ,事件类型
- end_docuent :结束文档事件
- start_tag: 开始标记
- end_tag :结束标记
private List<Map<String, String>> getXmlFormPull(InputStream is) throws Exception { List<Map<String, String>> mList = null; Map<String, String> map = null; // 1 得到pull对象 XmlPullParser xml = Xml.newPullParser(); xml.setInput(is, "utf-8"); // 2 得到标记 int eventType = xml.getEventType(); // 判断标记 是否结束, 因为 pull 当解析到一个节点,会自动停止,不会往下继续解析 while (eventType != XmlPullParser.END_DOCUMENT) { // 判断当前的节点信息 switch (eventType) { case XmlPullParser.START_DOCUMENT: // xml文件的开始,初始化一个list mList = new ArrayList<Map<String, String>>(); break; case XmlPullParser.START_TAG: // START_TAG ,有多个,需要进行判断 String TagName = xml.getName(); if (TagName.equals("books")) { // 根节点 ,创建mapduixiang } else if (TagName.equals("book")) {
map = new HashMap<String, String>(); // 第一属性节点 String id = xml.getAttributeValue(0); map.put("ID", id); } else if (TagName.equals("name")) { String name = xml.nextText(); map.put("name", name); } else if (TagName.equals("price")) { String price = xml.nextText(); map.put("price", price); } break; case XmlPullParser.END_TAG: // 结束节点,一个子节点完成 if (xml.getName().equals("book")) { mList.add(map); } break; default: break; } // 标记移动到下一个节点 eventType = xml.next(); } System.out.println(mList.toString()); return mList; }
以上是关于pull 解析XML 文件的主要内容,如果未能解决你的问题,请参考以下文章