




下載本文檔
版權(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中怎么解析XML文件
本篇文章給大家分享的是有關(guān)Android中怎么解析XML文件,在下覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著在下一起來(lái)看看吧。XMLXML(eXtensibleMarkupLanguage)中文名為可擴(kuò)展標(biāo)記語(yǔ)言。標(biāo)記指計(jì)算機(jī)所能理解的信息符號(hào),通過(guò)此種標(biāo)記,計(jì)算機(jī)之間可以處理包含各種信息的文章等。用途XML設(shè)計(jì)用了傳送及攜帶數(shù)據(jù)信息,不用了表現(xiàn)或展示數(shù)據(jù),HTML語(yǔ)言則用了表現(xiàn)數(shù)據(jù),所以XML用途的焦點(diǎn)是它說(shuō)明數(shù)據(jù)是什么,以及攜帶數(shù)據(jù)信息。豐富文件——自定文件描述并使其更豐富元數(shù)據(jù)——描述其它文件或網(wǎng)絡(luò)資訊配置文檔——描述軟件設(shè)置的參數(shù)結(jié)構(gòu)每個(gè)XML文檔都由XML序言開(kāi)始,在前面的代碼中第一行就是XML序言,<?xmlversion="1.0"?>。這一行代碼會(huì)告訴解析器或?yàn)g覽器這個(gè)文件應(yīng)該按照XML規(guī)則進(jìn)行解析。但是,根元素的名稱是由文檔類型定義或XML綱要定義的。XmlPullParserPULL解析xml是基于事件驅(qū)動(dòng)的方式解析XML文件,pull開(kāi)始解析時(shí),我們可以先通過(guò)getEventType()方法獲取當(dāng)前解析事件類型,并且通過(guò)next()方法獲取下一個(gè)解析事件類型。PULL解析器提供了START_DOCUMENT(開(kāi)始文檔)、END_DOCUMENT(結(jié)束文檔)、START_TAG(開(kāi)始標(biāo)簽)、END_TAG(結(jié)束標(biāo)簽)四種事件解析類型。當(dāng)處于某個(gè)元素時(shí),可以調(diào)用getAttributeValue()方法獲取屬性的值,也可以通過(guò)nextText()方法獲取本節(jié)點(diǎn)的文本值。下面通過(guò)一個(gè)例子來(lái)進(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
對(duì)象
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:
/**
*
通過(guò)getName判斷讀到哪個(gè)標(biāo)簽,
然后通過(guò)nextText獲取文本節(jié)點(diǎn)值,
*
或者通過(guò)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類的定義比較簡(jiǎn)單,代碼如下: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. 本站所有資源如無(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 員工賬號(hào)授權(quán)合同范本
- 凈水商業(yè)租賃合同范本
- 賣房臨時(shí)出租合同范例
- 北京農(nóng)村租房合同范本
- 代簽訂投標(biāo)合同范本
- 雙方購(gòu)車合同范本
- 單位窗簾裝修合同范例
- 代購(gòu)電纜合同范本
- 廠地購(gòu)買合同范本
- 吊車購(gòu)銷合同范本
- QQ三國(guó)副職及日常物品成本計(jì)算表v
- 中國(guó)傳統(tǒng)故事英文哪吒鬧海二篇
- GB/T 9441-1988球墨鑄鐵金相檢驗(yàn)
- GB/T 4294-1997氫氧化鋁
- GB/T 37862-2019非開(kāi)挖修復(fù)用塑料管道總則
- GB/T 24338.1-2018軌道交通電磁兼容第1部分:總則
- 2023年新改版教科版六年級(jí)下冊(cè)科學(xué)全冊(cè)課件
- 無(wú)人機(jī)測(cè)繪技術(shù)及應(yīng)用課件
- 浦發(fā)銀行個(gè)人信用報(bào)告異議申請(qǐng)表
- 初二數(shù)學(xué)初一數(shù)學(xué)競(jìng)賽講座116講
- 2022暖通空調(diào)第三版課后題答案
評(píng)論
0/150
提交評(píng)論