日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀] 前面寫了兩篇XML解析的Dom和SAX方式,Dom比較符合思維方式,SAX事件驅(qū)動(dòng)注重效率,除了這兩種方式以外也可以使用Android內(nèi)置的Pull解析器解析XML文件。 Pull解析器的運(yùn)行

 前面寫了兩篇XML解析的Dom和SAX方式,Dom比較符合思維方式,SAX事件驅(qū)動(dòng)注重效率,除了這兩種方式以外也可以使用Android內(nèi)置的Pull解析器解析XML文件。 Pull解析器的運(yùn)行方式與 SAX 解析器相似,也是事件觸發(fā)的。Pull解析方式讓應(yīng)用程序完全控制文檔該怎么樣被解析,比如開(kāi)始和結(jié)束元素事件,使用parser.next()可以進(jìn)入下一個(gè)元素并觸發(fā)相應(yīng)事件。通過(guò)Parser.getEventType()方法來(lái)取得事件的代碼值,解析是在開(kāi)始時(shí)就完成了大部分處理。事件將作為數(shù)值代碼被發(fā)送,因此可以使用一個(gè)switch對(duì)感興趣的事件進(jìn)行處理,只過(guò)PULL方式讀xml回調(diào)方法返回的是數(shù)字。

Pull創(chuàng)建XML

創(chuàng)建XML先實(shí)例化一個(gè)序列化對(duì)象,之后的通過(guò)Tag進(jìn)行操作:

public void createXML() {

// 初始化一個(gè)序列化對(duì)象

XmlSerializer serializer = Xml.newSerializer();

File path = new File(getFilesDir(), "BookTest.xml");

try {

FileOutputStream foStream = new FileOutputStream(path);

serializer.setOutput(foStream, "utf-8");

//設(shè)置文檔

serializer.startDocument("utf-8", true);

//設(shè)置根節(jié)點(diǎn)

serializer.startTag(null, "Books");

for (int i = 1; i < 4; i++) {

//設(shè)置子節(jié)點(diǎn)

serializer.startTag(null, "Book");

serializer.attribute(null, "name", "書籍" + i);

serializer.startTag(null, "Title");

serializer.text("內(nèi)容" + i);

serializer.endTag(null, "Title");

serializer.endTag(null, "Book");

}

serializer.endTag(null, "Books");

serializer.endDocument();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalArgumentException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalStateException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

生成的XML的結(jié)果:

 

 

 

 

 

 

 

Pull讀取XML

展示內(nèi)容調(diào)用getListBooksByPull方法:

public List getListBooksByPull() {

list = new ArrayList();

File path = new File(getFilesDir(), "BookTest.xml");

try {

FileInputStream inputStream = new FileInputStream(path);

// 獲得pull解析器對(duì)象

XmlPullParser parser = Xml.newPullParser();

// 指定解析的文件和編碼格式

parser.setInput(inputStream, "utf-8");

int eventType = parser.getEventType(); // 獲得事件類型

Book book = null;

while (eventType != XmlPullParser.END_DOCUMENT) {

String tagNameString = parser.getName();

switch (eventType) {

case XmlPullParser.START_TAG:

if ("Book".equals(tagNameString)) {//Book標(biāo)簽

book = new Book();

book.setName(parser.getAttributeValue(null, "name"));

} else if ("Title".equals(tagNameString)) {//Title標(biāo)簽

book.setTitle(parser.nextText());

}

break;

case XmlPullParser.END_TAG:

if ("Book".equals(tagNameString)) {

list.add(book);

}

break;

default:

break;

}

eventType = parser.next();//重新賦值,不然會(huì)死循環(huán)

}

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (XmlPullParserException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return list;

}

相對(duì)于Dom和SAX來(lái)說(shuō),Pull比較簡(jiǎn)單易讀,不過(guò)簡(jiǎn)單的總結(jié)一下常用的幾個(gè)方法:讀取到xml的聲明返回 START_DOCUMENT; 讀取到xml的結(jié)束返回 END_DOCUMENT ; 讀取到xml的開(kāi)始標(biāo)簽返回 START_TAG ,讀取到xml的結(jié)束標(biāo)簽返回 END_TAG 讀取到xml的文本返回 TEXT .

Activity加載時(shí)候調(diào)用:

ListView listView = (ListView) findViewById(R.id.list_pull);

ArrayList

list = getListBooksByPull();

for (Book book : list) {

HashMap

map.put("itemTitle", book.getName());

map.put("itemText", book.getTitle());

arrayList.add(map);

}

SimpleAdapter simpleAdapter = new SimpleAdapter(this, arrayList,

R.layout.book, new String[] { "itemTitle", "itemText" },

new int[] { R.id.itemTitle, R.id.itemText });

listView.setAdapter(simpleAdapter);[!--empirenews.page--]

簡(jiǎn)單回顧一下三種解析方式,Dom解析xml是先把xml文檔都讀到內(nèi)存中,然后再用DOM API來(lái)訪問(wèn)樹形結(jié)構(gòu),并獲取數(shù)據(jù)。這個(gè)寫起來(lái)很簡(jiǎn)單,但是很消耗內(nèi)存。要是數(shù)據(jù)過(guò)大,手機(jī)配置不行可能會(huì)死機(jī)。SAX解析是對(duì)文檔進(jìn)行順序掃描,當(dāng)掃描到文檔(document)開(kāi)始與結(jié)束、元素(element)開(kāi)始與結(jié)束、文檔(document)結(jié)束等地方時(shí)通知事件處理函數(shù),由事件處理函數(shù)做相應(yīng)動(dòng)作,然后繼續(xù)同樣的掃描,直至文檔結(jié)束。Pull解析器和SAX解析器很相似,但SAX解析器的工作方式是自動(dòng)將事件推入注冊(cè)的事件處理器進(jìn)行處理,因此你不能控制事件的處理主動(dòng)結(jié)束;而Pull解析器的工作方式為允許你的應(yīng)用程序代碼主動(dòng)從解析器中獲取事件,正因?yàn)槭侵鲃?dòng)獲取事件,因此可以在滿足了需要的條件后不再獲取事件,結(jié)束解析。Pull的寫法確實(shí)很輕巧也很容易上手,個(gè)人比較喜歡Pull。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀

北京和東京2026年3月30日 /美通社/ -- 百奧賽圖(北京)醫(yī)藥科技股份有限公司(以下簡(jiǎn)稱"百奧賽圖",SSE: 688796;HKEX: 02315),一家以創(chuàng)新技術(shù)驅(qū)動(dòng)新藥研發(fā)的國(guó)際性生物技...

關(guān)鍵字: AN ADC 模型 IO

北京2026年3月27日 /美通社/ -- 百奧賽圖(北京)醫(yī)藥科技股份有限公司(以下簡(jiǎn)稱"百奧賽圖",SSE: 688796;HKEX: 02315),一家以創(chuàng)新技術(shù)驅(qū)動(dòng)新藥研發(fā)的國(guó)際性生物技術(shù)公司...

關(guān)鍵字: NEO ADC IO FDA

奧地利格拉茨2026年3月27日 /美通社/ -- 2026年3月18日,廣汽歐洲業(yè)務(wù)發(fā)展迎來(lái)重要里程碑——旗下埃安品牌車型AION UT在奧地利麥格納(Magna)工廠正式實(shí)現(xiàn)量產(chǎn)啟動(dòng)(SOP)并成功下線,標(biāo)志著廣汽在...

關(guān)鍵字: 廣汽 IO AI 電動(dòng)化

曼谷2026年3月25日 /美通社/ -- 3月23日,第47屆曼谷國(guó)際車展正式開(kāi)幕。廣汽國(guó)際以"服務(wù)升級(jí)"為核心,在車展現(xiàn)場(chǎng)重磅發(fā)布海外首個(gè)服務(wù)品牌GAC CARE,全面啟動(dòng)"泰國(guó)行動(dòng)2....

關(guān)鍵字: 廣汽 AC 新能源汽車 IO

菲律賓馬尼拉2026年3月26日 /美通社/ -- 2026年開(kāi)年,廣汽在亞太區(qū)域延續(xù)強(qiáng)勁增長(zhǎng)勢(shì)頭。自1月末起,廣汽國(guó)際菲律賓以"品牌煥新"為核心,在短短一個(gè)多月內(nèi)完成了從戰(zhàn)略發(fā)布、體驗(yàn)升級(jí)到渠道動(dòng)員...

關(guān)鍵字: 廣汽 AC TE IO

北京2026年3月23日 /美通社/ -- 百奧賽圖(北京)醫(yī)藥科技股份有限公司(以下簡(jiǎn)稱"百奧賽圖",SSE: 688796;HKEX: 02315),一家以創(chuàng)新技術(shù)驅(qū)動(dòng)新藥研發(fā)的國(guó)際性生物技術(shù)公司...

關(guān)鍵字: LIGHT IO 生物技術(shù) NTC

約73%受試者可以達(dá)到每四個(gè)月一次給藥;近60%的受試者具備延長(zhǎng)至五個(gè)月一次給藥的潛力 美國(guó)舊金山和中國(guó)蘇州2026年3月24日 /美通社/ -- 信達(dá)生物制藥集團(tuán)(香港聯(lián)交所股票代碼:01801),一家致力...

關(guān)鍵字: AMD ST IO OV

廣州2026年3月17日 /美通社/ -- 近日,中國(guó)汽車流通協(xié)會(huì)發(fā)布的2月保值率研究報(bào)告顯示,廣汽傳祺三年保值率持續(xù)穩(wěn)居自主品牌榜首。車型保值率方面,傳祺GS8以77.0%的保值率登頂自主品牌中型SUV保值率排行榜;傳...

關(guān)鍵字: 廣汽 傳祺 IO AI

舊金山和中國(guó)蘇州2026年2月13日 /美通社/ -- 信達(dá)生物制藥集團(tuán)(香港聯(lián)交所股票代碼:01801),一家致力于研發(fā)、生產(chǎn)和銷售腫瘤、自身免疫、代謝、眼科等重大疾病領(lǐng)域創(chuàng)新藥物的生物制藥公司宣布,其自主研發(fā)的HER...

關(guān)鍵字: ADC EAST OV IO

- HUMAIN通過(guò)戰(zhàn)略性收購(gòu)ai.io的控股權(quán),推出HUMAIN Sport,宣布將致力于推進(jìn)AI驅(qū)動(dòng)型體育技術(shù)的發(fā)展。 - 此次收購(gòu)將加速AI與體育技術(shù)解決方案在沙特阿拉伯及全球市場(chǎng)的快速發(fā)展與落地。 - HUMAI...

關(guān)鍵字: AI SPORT IO 人工智能
關(guān)閉