這篇文章給大家分享的是有關(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文件
二、解析本地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)簽的不同判斷并保存信息。
在解析過程中遇到一個(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)