Android中用pull解析与保存xml文件

需要解析的xml文件
<?xml version="1.0" encoding="utf-8"?> <helps> <help> <id>1</id> <name>动物</name> <type>1</type> <picPath>/gfive/index/index_image1.png</picPath> </help> <help> <id>2</id> <name>植物</name> <type>2</type> <picPath>/gfive/index/index_image2.png</picPath> </help> <help> <id>3</id> <name>人物</name> <type>3</type> <picPath>/gfive/index/index_image3.png</picPath> </help> </helps>

  

 

package com.gfive.help;



import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.Serializable;

import java.util.ArrayList;

import java.util.List;



import org.xmlpull.v1.XmlPullParser;



import com.gfive.help.tools.Tools;



import android.content.Context;

import android.util.Xml;





/**

 * 帮助类首页实体类

 * @author Administrator

 */

public class HelpBean implements Serializable {

	

	private static final long serialVersionUID = 1L;

	public static final String HELP = "help";

	public static final String ID = "id";

	public static final String NAME = "name";

	public static final String PIC_PATH = "picPath";

	

	public String id;					//编号

	public String name;				//名字

	public String type;				//图片类型 

	public String picPath;			//图片

	

	private static final String INDEX_PATH = "/gfive/index/"; //导航页的图片



	

	/**

	 * pull 解析xml文件流

	 * @param is

	 * @return

	 */

	public static List<HelpBean> getHelps(InputStream is) {

		List<HelpBean> list = null;

		HelpBean help = null;

		XmlPullParser parser = Xml.newPullParser();

		int event = -1;

		try {

			parser.setInput(is, "UTF-8");

			event = parser.getEventType();

			while (event != XmlPullParser.END_DOCUMENT) {

				switch (event) {

				case XmlPullParser.START_DOCUMENT:

					list = new ArrayList<HelpBean>();

					break;

				case XmlPullParser.START_TAG:

					if (HelpBean.HELP.equals(parser.getName())) {// 得到指针所指向的节点名称

						help = new HelpBean();

					}

					if (help != null) {

						if (HelpBean.ID.equals(parser.getName())) {

							String id = parser.nextText();

							help.id = id;

						}else if (HelpBean.NAME.equals(parser.getName())) {

							String name = parser.nextText();

							help.name = name;

						} else if (HelpBean.PIC_PATH.equals(parser.getName())) {

							String picPath = parser.nextText();

							help.picPath = picPath;

						}

					}

					break;

				case XmlPullParser.END_TAG:

					if (HelpBean.HELP.equals(parser.getName())) {

						list.add(help);

						help = null;

					}

					break;

				default:

					break;

				}

				event = parser.next();

			}

		} catch (Exception e) {

			e.printStackTrace();

		}

		return list;

	}

	

	

	/**

	 * 读取Assert目录下的文件

	 * @param context

	 * @return

	 */

	public static  List<HelpBean> readAssertXml(Context context){

		List<HelpBean> lists = new ArrayList<HelpBean>();

		InputStream is = null;

		try {

			is = context.getResources().getAssets().open("help.xml");

			lists.addAll(HelpBean.getHelps(is));

		} catch (IOException e) {

			e.printStackTrace();

		}finally{

			try {

				if(null != is)

					is.close();

			} catch (IOException e) {

				e.printStackTrace();

			}

		}

		return lists;

	}

	

	/**

	 * 读取SD卡下的文件

	 * @param context

	 * @return

	 */

	public static  List<HelpBean> readSDCardXml(Context context){

		List<HelpBean> lists = new ArrayList<HelpBean>();

		InputStream is = null;

		try {

			File file = new File(Tools.SDCARD_STORAGE_PATH+INDEX_PATH+"help.xml");

			if(file.exists()){

				is = new FileInputStream(file);

				lists.addAll(HelpBean.getHelps(is));

			}

		} catch (Exception e) {

			e.printStackTrace();

		}finally{

			try {

				if(null != is)

					is.close();

			} catch (IOException e) {

				e.printStackTrace();

			}

		}

		return lists;

	}

}

 保存数据

public static void save(List<Persion> list,OutputStream os) throws IllegalArgumentException, IllegalStateException, IOException{ 

XmlSerializer serializer = Xml.newSerializer(); 

serializer.setOutput(os, "UTF-8"); 

serializer.startDocument("UTF-8", true); 

serializer.startTag(null, "persons"); 

for(Persion persion : list){ 

serializer.startTag(null, "person"); 

serializer.attribute(null, "id", String.valueOf(persion.getId())); 

serializer.startTag(null, "name"); 

serializer.text(persion.getName()); 

serializer.endTag(null, "name"); 

serializer.startTag(null, "age"); 

serializer.text(String.valueOf(persion.getAge())); 

serializer.endTag(null, "age"); 

serializer.endTag(null, "person"); 

} 

serializer.endTag(null, "persons"); 

serializer.endDocument(); 

os.flush(); 

os.close(); 

} 

}

  

你可能感兴趣的:(android)