付費(fèi)下載
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】Android中怎么解析XML文件
本篇文章給大家分享的是有關(guān)Android中怎么解析XML文件,在下覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著在下一起來看看吧。XMLXML(eXtensibleMarkupLanguage)中文名為可擴(kuò)展標(biāo)記語言。標(biāo)記指計算機(jī)所能理解的信息符號,通過此種標(biāo)記,計算機(jī)之間可以處理包含各種信息的文章等。用途XML設(shè)計用了傳送及攜帶數(shù)據(jù)信息,不用了表現(xiàn)或展示數(shù)據(jù),HTML語言則用了表現(xiàn)數(shù)據(jù),所以XML用途的焦點(diǎn)是它說明數(shù)據(jù)是什么,以及攜帶數(shù)據(jù)信息。豐富文件——自定文件描述并使其更豐富元數(shù)據(jù)——描述其它文件或網(wǎng)絡(luò)資訊配置文檔——描述軟件設(shè)置的參數(shù)結(jié)構(gòu)每個XML文檔都由XML序言開始,在前面的代碼中第一行就是XML序言,<?xmlversion="1.0"?>。這一行代碼會告訴解析器或瀏覽器這個文件應(yīng)該按照XML規(guī)則進(jìn)行解析。但是,根元素的名稱是由文檔類型定義或XML綱要定義的。XmlPullParserPULL解析xml是基于事件驅(qū)動的方式解析XML文件,pull開始解析時,我們可以先通過getEventType()方法獲取當(dāng)前解析事件類型,并且通過next()方法獲取下一個解析事件類型。PULL解析器提供了START_DOCUMENT(開始文檔)、END_DOCUMENT(結(jié)束文檔)、START_TAG(開始標(biāo)簽)、END_TAG(結(jié)束標(biāo)簽)四種事件解析類型。當(dāng)處于某個元素時,可以調(diào)用getAttributeValue()方法獲取屬性的值,也可以通過nextText()方法獲取本節(jié)點(diǎn)的文本值。下面通過一個例子來進(jìn)行解析。xml示例文件需要解析的xml示例文件代碼如下:<?xml
version="1.0"
encoding="UTF-8"?>
<colleagues>
<colleague
id="1">
<name>耗子</name>
<age>24</age>
<sex>boy</sex>
</colleague>
<colleague
id="2">
<name>璐璐</name>
<age>28</age>
<sex>girl</sex>
</colleague>
<colleague
id="3">
<name>陳善</name>
<age>26</age>
<sex>boy</sex>
</colleague>
</colleagues>XmlPullParser解析器package
com.example.shakedemo;
import
java.io.File;
import
java.io.FileNotFoundException;
import
java.io.FileReader;
import
java.io.IOException;
import
java.util.ArrayList;
import
java.util.List;
import
org.xmlpull.v1.XmlPullParser;
import
org.xmlpull.v1.XmlPullParserException;
import
org.xmlpull.v1.XmlPullParserFactory;
import
android.R.xml;
import
android.util.Log;
import
android.util.Xml;
public
class
XmlPullParserHelper
{
public
static
List<Colleague>
getColleagues(String
xmlFilePath)
{
List<Colleague>
colleagues
=
new
ArrayList<Colleague>();
FileReader
xmlReader
=
null;
try
{
xmlReader
=
new
FileReader(new
File(xmlFilePath));
}
catch
(FileNotFoundException
e)
{
Log.e("wzy",
"Couldn't
find
xml
file
"
+
xmlFilePath);
return
colleagues;
}
try
{
//
方式1:
使用
Android
提供的android.util.Xml
類獲取
parser
對象
XmlPullParser
parser
=
Xml.newPullParser();
//
方式2:
使用工廠類
XmlPullParserFactory
//
XmlPullParserFactory
pullFactory
=
//
XmlPullParserFactory.newInstance();
//
XmlPullParser
parser
=
pullFactory.newPullParser();
//
設(shè)置文件輸入流
parser.setInput(xmlReader);
//
得到當(dāng)前事件類型
int
eventType
=
parser.getEventType();
Colleague
colleague
=
null;
while
(eventType
!=
XmlPullParser.END_DOCUMENT)
{
switch
(eventType)
{
case
XmlPullParser.START_DOCUMENT:
break;
case
XmlPullParser.START_TAG:
/**
*
通過getName判斷讀到哪個標(biāo)簽,
然后通過nextText獲取文本節(jié)點(diǎn)值,
*
或者通過getAttributeValue(i)獲取屬性節(jié)點(diǎn)值
*/
String
name
=
parser.getName();
if
("colleague".equals(name))
{
colleague
=
new
Colleague();
colleague.setId(Integer.parseInt(parser.getAttributeValue(null,
"id")));
}
else
if
("name".equals(name))
{
if
(colleague
!=
null)
{
colleague.setName(parser.nextText());
}
}
else
if
("age".equals(name))
{
if
(colleague
!=
null)
{
colleague.setAge(Integer.parseInt(parser.nextText()));
}
}
else
if
("sex".equals(name))
{
if
(colleague
!=
null)
{
colleague.setSex(parser.nextText());
}
}
break;
case
XmlPullParser.END_TAG:
if
("colleague".equals(parser.getName())
&&
colleague
!=
null)
{
colleagues.add(colleague);
colleague
=
null;
}
break;
}
eventType
=
parser.next();
}
xmlReader.close();
}
catch
(XmlPullParserException
e)
{
//
Do
nothing
}
catch
(IOException
e)
{
//
Do
nothing
}
return
colleagues;
}
}其中,colleague類的定義比較簡單,代碼如下:package
com.example.shakedemo;
public
class
Colleague
{
private
int
id;
private
int
age;
private
String
name;
private
String
sex;
public
int
getId()
{
return
id;
}
public
void
setId(int
id)
{
this.id
=
id;
}
public
int
getAge()
{
return
age;
}
public
void
setAge(int
age)
{
this.age
=
age;
}
public
String
getName()
{
return
name;
}
public
void
setName(String
name)
{
=
name;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《音階歌(唱游、發(fā)現(xiàn))》教學(xué)設(shè)計-2025-2026學(xué)年接力版(新教材)小學(xué)音樂一年級下冊
- 甲殼類養(yǎng)殖工安全實操測試考核試卷含答案
- 氣體凈化工崗前理論技能考核試卷含答案
- 碾泥工安全檢查測試考核試卷含答案
- 我國上市公司治理結(jié)構(gòu)的理性構(gòu)建之路
- 我國上市公司并購重組盈利補(bǔ)償機(jī)制:實踐、問題與優(yōu)化路徑
- 丁苯橡膠裝置操作工安全應(yīng)急知識考核試卷含答案
- 苗木培育工崗前安全理論考核試卷含答案
- 鎢絞絲加熱子制造工安全綜合考核試卷含答案
- 水工混凝土維修工達(dá)標(biāo)能力考核試卷含答案
- 淮安市2023-2024學(xué)年七年級上學(xué)期期末歷史試卷(含答案解析)
- 完整工資表模板(帶公式)
- 家長要求學(xué)校換老師的申請書
- 奇瑞汽車QC小組成果匯報材料
- 闌尾腫瘤-課件
- CTT2000LM用戶手冊(維護(hù)分冊)
- 川2020J146-TJ 建筑用輕質(zhì)隔墻條板構(gòu)造圖集
- 正式員工派遣單
- 新員工入職申請表模板
- 中外新聞事業(yè)史課程教學(xué)大綱
- LY/T 1357-2008歧化松香
評論
0/150
提交評論