您现在的位置:首页 >> 前端 >> 内容

实现XMl文件的序列化与解析

时间:2015/5/18 10:46:17 点击:

  核心提示: wang1 10 wang2 11 wang3 12 wang4 13 将上面的xml文件队形实例化与解析。直接写代码:public class TestCase ex...

	
		wang1
		10>
	

	
		wang2
		11>
	

	
		wang3
		12>
	

	
		wang4
		13>
	

 

 

将上面的xml文件队形实例化与解析。

 

直接写代码:

 

 

public class TestCase extends AndroidTestCase {
	public void test() {
//		writeToLocal();
		List persons = parserXmlFromLocal();
	
		for (Person person : persons) {
			Log.i("testcase", person.toString());
		}
	}

	private void writeToLocal() {
		List personlist = getPersonList();

		XmlSerializer serializer = Xml.newSerializer();

		try {

			File path = new File(Environment.getExternalStorageDirectory(),
					"persons.xml");
			FileOutputStream fos = new FileOutputStream(path);

			serializer.setOutput(fos, "utf-8");
			serializer.startDocument("utf-8", true);
			serializer.startTag(null, "persons");// 

			for (Person person : personlist) {
				// 开始写人
				serializer.startTag(null, "person");
				serializer
						.attribute(null, "id", String.valueOf(person.getId()));
				// 写名字
				serializer.startTag(null, "name");
				serializer.text(person.getName());
				serializer.endTag(null, "name");

				// 写年龄
				serializer.startTag(null, "age");
				serializer.text(person.getAge() + "");
				serializer.endTag(null, "age");

				serializer.endTag(null, "person");
			}
			serializer.endTag(null, "persons");
			serializer.endDocument();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	private List getPersonList() {
		List persons = new ArrayList();
		for (int i = 0; i < 20; i++) {
			persons.add(new Person(i, "wang" + i, 10 + i));
		}
		return persons;
	}
	
	private List parserXmlFromLocal (){
		
		try {
			File path = new File(Environment.getExternalStorageDirectory(),"persons.xml");
			FileInputStream fis = new FileInputStream(path);
			
			XmlPullParser parser = Xml.newPullParser();
			
			parser.setInput(fis,"utf-8");
			
			int eventType = parser.getEventType();
			
			List personlist = null;
			Person person = null;
			String id;
			
			while (eventType != XmlPullParser.END_DOCUMENT){
				String tagName = parser.getName();
				
				switch (eventType) {
				case XmlPullParser.START_TAG:
					if("persons".equals(tagName)){
						personlist = new ArrayList();
						
					}else if ("person".equals(tagName)){
						person = new Person();
						id = parser.getAttributeValue(null,"id");
						person.setId(Integer.valueOf(id));
					}else if ("name".equals(tagName)){
						person.setName(parser.nextText());
					}else if ("age".equals(tagName)){
						person.setAge(Integer.valueOf(parser.nextText()));
					}
					break;
				case XmlPullParser.END_TAG:
					if ("person".equals(tagName)){
						personlist.add(person);
					}
					break;
				default:
					break;
				}
				eventType = parser.next();
			}
			return personlist;
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}
}


 

 

Tags:实现 现X XM ML 
作者:网络 来源:bobo