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

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論