【移動應(yīng)用開發(fā)技術(shù)】Android中怎么解析XML文件_第1頁
【移動應(yīng)用開發(fā)技術(shù)】Android中怎么解析XML文件_第2頁
【移動應(yīng)用開發(fā)技術(shù)】Android中怎么解析XML文件_第3頁
【移動應(yīng)用開發(fā)技術(shù)】Android中怎么解析XML文件_第4頁
【移動應(yīng)用開發(fā)技術(shù)】Android中怎么解析XML文件_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

付費(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論