现在的位置: 首页 > 综合 > 正文

xml解析(一) XmlPullParser的使用

2018年05月01日 ⁄ 综合 ⁄ 共 1305字 ⁄ 字号 评论关闭

XmlPullParser是android自带的xml解析器

public static ArrayList<TvUrl> getChannelsData(InputStream is) {
		ArrayList<TvUrl> list = null;
		TvUrl tvurl = null;
		XmlPullParserFactory pullFactory;
		try {
			pullFactory = XmlPullParserFactory.newInstance();
			XmlPullParser xmlPullParser = pullFactory.newPullParser();
			if(is == null)
			{
				return null;
			}
			xmlPullParser.setInput(is, "UTF-8");
			int eventType = xmlPullParser.getEventType();
			while (eventType != XmlPullParser.END_DOCUMENT) {
				String tagName = xmlPullParser.getName();
				switch (eventType) {
				case XmlPullParser.START_DOCUMENT:
					list =  new ArrayList<TvUrl>();
					break;
				case XmlPullParser.START_TAG:
					if("tv".equals(tagName))
					{
						tvurl = new TvUrl();
					}
					else if ("channelid".equals(tagName)) {
						tvurl.setid(xmlPullParser.nextText());
//						Log.i(tvurl.getid());
					}
					else if("name".equals(tagName))
					{
						tvurl.setName(xmlPullParser.nextText());
//						Log.i(tvurl.getName());
					}
					else if("url".equals(tagName))
					{
						String str = xmlPullParser.nextText();
						tvurl.AddUrl(str);
//						Log.i(str);
					}
					break;
				case XmlPullParser.END_TAG:
					if ("tv".equals(tagName) && tvurl != null) {
						list.add(tvurl);
					}
					break;
				default:
					break;
				}
				eventType = xmlPullParser.next();
			}

		} catch (XmlPullParserException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return list;
	}

xmlPullParser.nextText() 是解析xml某个标签的值。

xmlPullParser.getAttributeValue(0)  是解析xml某个标签下中属性值,0代表位置为0的属性

抱歉!评论已关闭.