免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

Android如何實(shí)現(xiàn)向本地寫入一個(gè)XML文件和解析XML文件

這篇文章給大家分享的是有關(guān)Android如何實(shí)現(xiàn)向本地寫入一個(gè)XML文件和解析XML文件的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

創(chuàng)新互聯(lián)主營(yíng)金口河網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶App定制開發(fā),金口河h5小程序開發(fā)搭建,金口河網(wǎng)站營(yíng)銷推廣歡迎金口河等地區(qū)企業(yè)咨詢

在網(wǎng)絡(luò)存儲(chǔ)過程中有很多時(shí)候會(huì)遇到XML文件解析和使用XML保存一些信息,解析XML文件用的比較多的方法是pull解析和SAX解析,但是我一般只用pull解析,下面就向cd卡寫入一個(gè)XML文件,然后再使用pull解析的方法對(duì)文件進(jìn)行解析。

一、向SD卡中寫入一個(gè)XML文件:

/**
	 * 向SD卡寫入一個(gè)XML文件
	 * 
	 * @param v
	 */
	public void savexml(View v) {
 
		try {
			File file = new File(Environment.getExternalStorageDirectory(),
					"persons.xml");
			FileOutputStream fos = new FileOutputStream(file);
			// 獲得一個(gè)序列化工具
			XmlSerializer serializer = Xml.newSerializer();
			serializer.setOutput(fos, "utf-8");
			// 設(shè)置文件頭
			serializer.startDocument("utf-8", true);
			serializer.startTag(null, "persons");
			for (int i = 0; i < 10; i++) {
				serializer.startTag(null, "person");
				serializer.attribute(null, "id", String.valueOf(i));
				// 寫姓名
				serializer.startTag(null, "name");
				serializer.text("張三" + i);
				serializer.endTag(null, "name");
				// 寫性別
				serializer.startTag(null, "gender");
				serializer.text("男" + i);
				serializer.endTag(null, "gender");
				// 寫年齡
				serializer.startTag(null, "age");
				serializer.text("1" + i);
				serializer.endTag(null, "age");
 
				serializer.endTag(null, "person");
			}
			serializer.endTag(null, "persons");
			serializer.endDocument();
			fos.close();
			Toast.makeText(MainActivity.this, "寫入成功", 0).show();
		} catch (Exception e) {
			e.printStackTrace();
			Toast.makeText(MainActivity.this, "寫入失敗", 0).show();
		}
 
	}

1、設(shè)置XML文件保存的地址,2、獲得一個(gè)序列化工具,3、寫XML文件的頭,4、循環(huán)寫入信息。

最后得到的XML文件

Android如何實(shí)現(xiàn)向本地寫入一個(gè)XML文件和解析XML文件

二、解析本地XML文件

/**
	 * 讀取SD卡中的XML文件,使用pull解析
	 * 
	 * @param v
	 */
	public void readxml(View v) {
 
		try {
			File path = new File(Environment.getExternalStorageDirectory(),
					"persons.xml");
			FileInputStream fis = new FileInputStream(path);
 
			// 獲得pull解析器對(duì)象
			XmlPullParser parser = Xml.newPullParser();
			// 指定解析的文件和編碼格式
			parser.setInput(fis, "utf-8");
 
			int eventType = parser.getEventType(); // 獲得事件類型
 
			String id = null;
			String name = null;
			String gender = null;
			String age = null;
			while (eventType != XmlPullParser.END_DOCUMENT) {
				String tagName = parser.getName(); // 獲得當(dāng)前節(jié)點(diǎn)的名稱
 
				switch (eventType) {
				case XmlPullParser.START_TAG: // 當(dāng)前等于開始節(jié)點(diǎn) <person>
					if ("persons".equals(tagName)) { // <persons>
					} else if ("person".equals(tagName)) { // <person id="1">
						id = parser.getAttributeValue(null, "id");
					} else if ("name".equals(tagName)) { // <name>
						name = parser.nextText();
					}else if ("gender".equals(tagName)) { // <age>
						gender = parser.nextText();
					} else if ("age".equals(tagName)) { // <age>
						age = parser.nextText();
					}
					break;
				case XmlPullParser.END_TAG: // </persons>
					if ("person".equals(tagName)) {
						Log.i(TAG, "id---" + id);
						Log.i(TAG, "name---" + name);
						Log.i(TAG, "gender---" + gender);
						Log.i(TAG, "age---" + age);
					}
					break;
				default:
					break;
				}
				eventType = parser.next(); // 獲得下一個(gè)事件類型
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			
		}

1、獲取要解析XML文件的地址,2、獲得pull解析工具,3、根據(jù)標(biāo)簽的不同判斷并保存信息。

Android如何實(shí)現(xiàn)向本地寫入一個(gè)XML文件和解析XML文件

在解析過程中遇到一個(gè)問題,就是在解析完了之后,調(diào)用fis.close()函數(shù)時(shí),會(huì)報(bào)bad file number的錯(cuò)誤,檢查了很久才發(fā)現(xiàn)是這句話的問題。

補(bǔ)充知識(shí):Android 讀取raw下的xml配置文件

1、獲取數(shù)據(jù)流

// 讀取配置文件
InputStream in = context.getResources().openRawResource(R.raw.cfg);

2、解析xml文件

public class XmlParser<T>{
  public T xmlParser(InputStream xml) throws Exception {
    XmlPullParser pullParse = Xml.newPullParser();
    pullParse.setInput(xml, "UTF-8");
    int event = pullParse.getEventType();
    while (event != XmlPullParser.END_DOCUMENT) {
      switch (event) {

        case XmlPullParser.START_DOCUMENT:
          //文件開頭
          break;

        case XmlPullParser.START_TAG:
          //標(biāo)簽開始標(biāo)志
          //pullParse.getName() 獲取標(biāo)簽名
          //pullParse.getAttributeValue(0)獲取標(biāo)簽的參數(shù)
          //pullParse.nextText() 獲取標(biāo)簽內(nèi)的值

          break;

        case XmlPullParser.END_TAG:
          //標(biāo)簽結(jié)束標(biāo)志
          break;
      }
      event = pullParse.next();//進(jìn)行下一個(gè)標(biāo)簽的解析

    }
    return T;
  }
}

感謝各位的閱讀!關(guān)于“Android如何實(shí)現(xiàn)向本地寫入一個(gè)XML文件和解析XML文件”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

網(wǎng)站名稱:Android如何實(shí)現(xiàn)向本地寫入一個(gè)XML文件和解析XML文件
文章路徑:http://m.newbst.com/article4/gpjcoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)網(wǎng)站制作App開發(fā)網(wǎng)站排名動(dòng)態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)