package pyp.navigation.association.service; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.xmlpull.v1.XmlPullParser; import pyp.navigation.association.bean.Association; import android.util.Xml; /** * @Title: ReadXmlByPullService * @Description: 使用pull解析xml - AllAssociation.xml * @author qsuron * @date 2014-7-15 * @email admin@qiushurong.cn */ public class ReadXmlByPullService { public static List<Association> ReadXmlByPull(InputStream inputStream) throws Exception { List<Association> list = null; // android给我们提供了xml 用来得到xmlpull解析器 XmlPullParser xmlpull = Xml.newPullParser(); // 将输入流传入 设定编码方式 xmlpull.setInput(inputStream, "utf-8"); /* * pull读到xml后 返回数字 读取到xml的声明返回数字0 START_DOCUMENT; 读取到xml的结束返回数字1 * END_DOCUMENT ; 读取到xml的开始标签返回数字2 START_TAG 读取到xml的结束标签返回数字3 END_TAG * 读取到xml的文本返回数字4 TEXT */ int eventCode = xmlpull.getEventType(); // 只要这个事件返回的不是1 我们就一直读取xml文件 Association association = null; while (eventCode != XmlPullParser.END_DOCUMENT) { switch (eventCode) { case XmlPullParser.START_DOCUMENT: { list = new ArrayList<Association>(); break; } case XmlPullParser.START_TAG: { if ("association".equals(xmlpull.getName())) { association = new Association(); String id = xmlpull.getAttributeValue(0); association.setId(id); association.setIcon("association_logo_" + id); } else if (association != null) { if ("key".equals(xmlpull.getName())) { association.setKey(xmlpull.nextText()); } else if ("name".equals(xmlpull.getName())) { association.setName(xmlpull.nextText()); } } break; } case XmlPullParser.END_TAG: { if ("association".equals(xmlpull.getName()) && association != null) { list.add(association); association = null; } break; } } // 没有结束xml文件就推到下个进行解析 eventCode = xmlpull.next(); } return list; } }