Android中用pull解析與儲存xml檔案

來源:互聯網
上載者:User
需要解析的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(); } }

  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.