![【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android如何實(shí)現(xiàn)向本地寫(xiě)入一個(gè)XML文件和解析XML文件_第1頁(yè)](http://file4.renrendoc.com/view/be04f5d473d079e39bbfbdf711857842/be04f5d473d079e39bbfbdf7118578421.gif)
![【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android如何實(shí)現(xiàn)向本地寫(xiě)入一個(gè)XML文件和解析XML文件_第2頁(yè)](http://file4.renrendoc.com/view/be04f5d473d079e39bbfbdf711857842/be04f5d473d079e39bbfbdf7118578422.gif)
![【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android如何實(shí)現(xiàn)向本地寫(xiě)入一個(gè)XML文件和解析XML文件_第3頁(yè)](http://file4.renrendoc.com/view/be04f5d473d079e39bbfbdf711857842/be04f5d473d079e39bbfbdf7118578423.gif)
![【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android如何實(shí)現(xiàn)向本地寫(xiě)入一個(gè)XML文件和解析XML文件_第4頁(yè)](http://file4.renrendoc.com/view/be04f5d473d079e39bbfbdf711857842/be04f5d473d079e39bbfbdf7118578424.gif)
![【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android如何實(shí)現(xiàn)向本地寫(xiě)入一個(gè)XML文件和解析XML文件_第5頁(yè)](http://file4.renrendoc.com/view/be04f5d473d079e39bbfbdf711857842/be04f5d473d079e39bbfbdf7118578425.gif)
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android如何實(shí)現(xiàn)向本地寫(xiě)入一個(gè)XML文件和解析XML文件
這篇文章給大家分享的是有關(guān)Android如何實(shí)現(xiàn)向本地寫(xiě)入一個(gè)XML文件和解析XML文件的內(nèi)容。在下覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨在下過(guò)來(lái)看看吧。在網(wǎng)絡(luò)存儲(chǔ)過(guò)程中有很多時(shí)候會(huì)遇到XML文件解析和使用XML保存一些信息,解析XML文件用的比較多的方法是pull解析和SAX解析,但是我一般只用pull解析,下面就向cd卡寫(xiě)入一個(gè)XML文件,然后再使用pull解析的方法對(duì)文件進(jìn)行解析。一、向SD卡中寫(xiě)入一個(gè)XML文件:/**
*
向SD卡寫(xiě)入一個(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));
//
寫(xiě)姓名
serializer.startTag(null,
"name");
serializer.text("張三"
+
i);
serializer.endTag(null,
"name");
//
寫(xiě)性別
serializer.startTag(null,
"gender");
serializer.text("男"
+
i);
serializer.endTag(null,
"gender");
//
寫(xiě)年齡
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,
"寫(xiě)入成功",
0).show();
}
catch
(Exception
e)
{
e.printStackTrace();
Toast.makeText(MainActivity.this,
"寫(xiě)入失敗",
0).show();
}
}1、設(shè)置XML文件保存的地址,2、獲得一個(gè)序列化工具,3、寫(xiě)XML文件的頭,4、循環(huán)寫(xiě)入信息。最后得到的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();
//
獲得事件類(lèi)型
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)的名稱(chēng)
switch
(eventType)
{
case
XmlPullParser.START_TAG:
//
當(dāng)前等于開(kāi)始節(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è)事件類(lèi)型
}
}
catch
(Exception
e)
{
e.printStackTrace();
}finally{
}1、獲取要解析XML文件的地址,2、獲得pull解析工具,3、根據(jù)標(biāo)簽的不同判斷并保存信息。在解析過(guò)程中遇到一個(gè)問(wèn)題,就是在解析完了之后,調(diào)用fis.close()函數(shù)時(shí),會(huì)報(bào)badfilenumber的錯(cuò)誤,檢查了很久才發(fā)現(xiàn)是這句話的問(wèn)題。補(bǔ)充知識(shí):Android讀取raw下的xml配置文件1、獲取數(shù)據(jù)流//讀取配置文件InputStreamin=context.getResources().openRawResource(R.raw.cfg);//讀取配置文件InputStreamin=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:
//文件開(kāi)頭
break;
case
XmlPullParser.START_TAG:
//標(biāo)簽開(kāi)始標(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é)束
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個(gè)人車(chē)位出租合同樣本(2篇)
- 服裝公司辦公室裝修合同
- 商業(yè)地產(chǎn)租賃居間協(xié)議樣本
- 保健食品配送合同范本
- 2025年度信息安全保密技術(shù)合作開(kāi)發(fā)合同
- 人工智能監(jiān)理居間合同
- 服裝批發(fā)市場(chǎng)物流合同
- 橡膠行業(yè)融資居間合同范例
- 2025年度安防產(chǎn)品區(qū)域代理及市場(chǎng)推廣合同
- 2025年度信息安全保密合作協(xié)議
- 《媒介社會(huì)學(xué)》課件
- 項(xiàng)目設(shè)計(jì)報(bào)告范文高中
- 成人手術(shù)后疼痛評(píng)估與護(hù)理團(tuán)體標(biāo)準(zhǔn)
- zemax-優(yōu)化函數(shù)說(shuō)明書(shū)
- 2021年《民法典擔(dān)保制度司法解釋》適用解讀之擔(dān)保解釋的歷程
- 第02講 導(dǎo)數(shù)與函數(shù)的單調(diào)性(學(xué)生版)-2025版高中數(shù)學(xué)一輪復(fù)習(xí)考點(diǎn)幫
- 《醫(yī)療機(jī)構(gòu)工作人員廉潔從業(yè)九項(xiàng)準(zhǔn)則》專(zhuān)題解讀
- 成立商會(huì)的可行性報(bào)告5則范文
- 湖南財(cái)政經(jīng)濟(jì)學(xué)院《常微分方程》2023-2024學(xué)年第一學(xué)期期末試卷
- 游戲賬號(hào)借用合同模板
- 2022年中考英語(yǔ)語(yǔ)法-專(zhuān)題練習(xí)-名詞(含答案)
評(píng)論
0/150
提交評(píng)論