频道栏目
首页 > 程序开发 > 移动开发 > Android > 正文
android采用pull解析器解析和生成XML
2013-12-14 11:29:12         来源:疯子的自言自语  
收藏   我要投稿

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);
	}




点击复制链接 与好友分享!回本站首页
相关TAG标签
上一篇:AndroidUI效果--开源项目IndexableListView(字母索引)
下一篇:Android学习——第一个NDK程序
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站