android采用pull解析器解析和生成XML

浏览:
字体:
发布时间:2013-12-17 09:37:14
来源:

在Android上解析XML文件可以采用SAX、DOM和Android的自带的pull。其中pull最方便和推荐使用:

对于一个XML文件中的内容,要定制一个JAVA BEAN来接收,先看下.XML文件的内容:

			liming		30				zhangxiaoxiao		25	

看下解析方法:

	/**	 * 解析XML	 * @param xml	 * @return	 * @throws Exception	 */	public List getPersons(InputStream xml)throws Exception{		List persons = null;		Person person = null;		XmlPullParser pullParser = Xml.newPullParser();		pullParser.setInput(xml,"UTF-8");//为pull解析器设置要解析的数据		int event = pullParser.getEventType();		while(event != XmlPullParser.END_DOCUMENT){			switch (event) {			case XmlPullParser.START_DOCUMENT:				persons = new ArrayList();				break;			case XmlPullParser.START_TAG:				if("person".equals(pullParser.getName())){					int id = new Integer(pullParser.getAttributeValue(0));					person = new Person();					person.setId(id);				}				if("name".equals(pullParser.getName())){					String name = pullParser.nextText();					person.setName(name);				}				if("age".equals(pullParser.getName())){					int  age = new Integer(pullParser.nextText());					person.setAge(age);				}				break;			case XmlPullParser.END_TAG:				if("person".equals(pullParser.getName())){					persons.add(person);					person = null;				}				break;			}			event = pullParser.next();		}		return persons;	}
测试方法:

public void testPerson()throws Exception{		InputStream xml = this.getClass().getClassLoader().getResourceAsStream("person.xml");		PersonService ps = new PersonService();		List persons = ps.getPersons(xml);		for (Person person : persons) {			Log.i(TAG,person.toString());		}	}
再看下生成XML文件:

	/**	 * 保存	 * @param persons	 * @param out	 * @throws Exception	 */	public void save(List persons,OutputStream out)throws Exception{		XmlSerializer serializer = Xml.newSerializer();		serializer.setOutput(out,"UTF-8");		serializer.startDocument("UTF-8", true);		serializer.startTag(null, "persons");		for (Person person : persons) {			serializer.startTag(null, "person");			serializer.attribute(null, "id", person.getId().toString());						serializer.startTag(null, "name");			serializer.text(person.getName());			serializer.endTag(null, "name");						serializer.startTag(null, "age");			serializer.text(person.getAge().toString());			serializer.endTag(null, "age");						serializer.endTag(null, "person");		}				serializer.endTag(null, "persons");		serializer.endDocument();		out.flush();		out.close();	}

看下生成的测试方法:

public void testSave()throws Exception{		PersonService ps = new PersonService();		List persons = new ArrayList();		persons.add(new Person(43,"zhangxx",80));		persons.add(new Person(12,"lili",20));		persons.add(new Person(15,"xiaoxiao",8));		File xmlFile = new File(getContext().getFilesDir(),"itcase.xml");		FileOutputStream outputStream = new FileOutputStream(xmlFile);		ps.save(persons, outputStream);	}




>更多相关文章
24小时热门资讯
24小时回复排行
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 关于东联 | 安全雇佣 | 搞笑视频大全 | 微信学院 | 视频课程 |
关于我们 | 联系我们 | 广告服务 | 免责申明 | 作品发布 | 网站地图 | 官方微博 | 技术培训
Copyright © 2007 - 2024 Vm888.Com. All Rights Reserved
粤公网安备 44060402001498号 粤ICP备19097316号 请遵循相关法律法规
');})();