下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
【移動應用開發(fā)技術】Android如何實現向本地寫入一個XML文件和解析XML文件
這篇文章給大家分享的是有關Android如何實現向本地寫入一個XML文件和解析XML文件的內容。在下覺得挺實用的,因此分享給大家做個參考,一起跟隨在下過來看看吧。在網絡存儲過程中有很多時候會遇到XML文件解析和使用XML保存一些信息,解析XML文件用的比較多的方法是pull解析和SAX解析,但是我一般只用pull解析,下面就向cd卡寫入一個XML文件,然后再使用pull解析的方法對文件進行解析。一、向SD卡中寫入一個XML文件:/**
*
向SD卡寫入一個XML文件
*
*
@param
v
*/
public
void
savexml(View
v)
{
try
{
File
file
=
new
File(Environment.getExternalStorageDirectory(),
"persons.xml");
FileOutputStream
fos
=
new
FileOutputStream(file);
//
獲得一個序列化工具
XmlSerializer
serializer
=
Xml.newSerializer();
serializer.setOutput(fos,
"utf-8");
//
設置文件頭
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、設置XML文件保存的地址,2、獲得一個序列化工具,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解析器對象
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();
//
獲得當前節(jié)點的名稱
switch
(eventType)
{
case
XmlPullParser.START_TAG:
//
當前等于開始節(jié)點
<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();
//
獲得下一個事件類型
}
}
catch
(Exception
e)
{
e.printStackTrace();
}finally{
}1、獲取要解析XML文件的地址,2、獲得pull解析工具,3、根據標簽的不同判斷并保存信息。在解析過程中遇到一個問題,就是在解析完了之后,調用fis.close()函數時,會報badfilenumber的錯誤,檢查了很久才發(fā)現是這句話的問題。補充知識:Android讀取raw下的xml配置文件1、獲取數據流//讀取配置文件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:
//文件開頭
break;
case
XmlPullParser.START_TAG:
//標簽開始標志
//pullParse.getName()
獲取標簽名
//pullParse.getAttributeValue(0)獲取標簽的參數
//pullParse.nextText()
獲取標簽內的值
break;
case
XmlPullParser.END_TAG:
//標簽結束
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 直郵廣告解決方案
- 二零二五年度房產租賃合同終止催告通知3篇
- 二零二五年度房地產物業(yè)管理合同范本5篇
- “銀色數字鴻溝”對老年人身心健康的影響
- “雙減”背景下學校課后服務質量的問題、原因及策略
- 蜜雪冰城企業(yè)案例分析
- 四川省瀘州市龍馬潭區(qū)瀘化中學2024-2025學年九年級上學期1月期末考試化學試卷(含答案)
- 建設生物質加工利用及年產3萬噸炭素資源化利用項目可行性研究報告模板-立項拿地
- 福建省廈門市同安區(qū)2024-2025學年八年級上學期期末模擬語文試卷(含答案)
- Unit5 Humans and nature Lesson 3 Race to the pole 說課稿 -2024-2025學年高中英語北師大版(2019)必修第二冊
- 武術體育運動文案范文
- JGJ64-2017飲食建筑設計標準(首發(fā))
- 高考化學一輪復習第9章水溶液中的離子反應與平衡第46講水溶液中的離子平衡圖像學案
- 2024年市級??谱o士理論考核試題及答案
- 供應商供貨服務方案(2篇)
- 氨水安全技術說明書msds
- 創(chuàng)新者的窘境讀書課件
- 四議兩公開培訓
- 2024酒旅行業(yè)品牌可持續(xù)發(fā)展白皮書-脈趣
- 曹操出行線上推廣方案
- 酒店財務年度述職報告
評論
0/150
提交評論