自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android XML讀寫(七)

移動(dòng)開發(fā) Android
Android 并未提供對(duì) Java StAX API 的支持。但是,Android 確實(shí)附帶了一個(gè) pull 解析器,其工作方式類似于 StAX。它允許您的應(yīng)用程序代碼從解析器中獲取事件,這與 SAX 解析器自動(dòng)將事件推入處理程序相反。清單 10 顯示了提要解析接口的一個(gè) pull 解析器實(shí)現(xiàn)。

與***個(gè) SAX 示例類似,以上代碼完全沒有特定于 Android 的地方。DOM 解析器將所有 XML 文檔讀取到內(nèi)存中,然后允許您使用 DOM API 遍歷 XML 樹、檢索所需的數(shù)據(jù)。這是非常直觀的代碼,并且,在某些方面比基于 SAX 的實(shí)現(xiàn)更加簡單。但是,DOM 通常更加占用內(nèi)存,因?yàn)橐磺袃?nèi)容都會(huì)先讀取到內(nèi)存中。這對(duì)于運(yùn)行 Android 的移動(dòng)設(shè)備來說是一個(gè)問題,但是當(dāng) XML 文檔始終保持很小的大小時(shí)是可行的。這可能意味著,Android 的開發(fā)人員會(huì)認(rèn)為 SAX 解析在 Android 應(yīng)用程序上更加常見,因此為它提供了額外的實(shí)用工具。Android 還提供了另一種類型的 XML 解析器,它就是 pull 解析器。

XML pull 解析器

如前所述,Android 并未提供對(duì) Java StAX API 的支持。但是,Android 確實(shí)附帶了一個(gè) pull 解析器,其工作方式類似于 StAX。它允許您的應(yīng)用程序代碼從解析器中獲取事件,這與 SAX 解析器自動(dòng)將事件推入處理程序相反。清單 10 顯示了提要解析接口的一個(gè) pull 解析器實(shí)現(xiàn)。

清單 10. 基于 Pull 解析器的實(shí)現(xiàn)

java代碼:

  1. public class XmlPullFeedParser extends BaseFeedParser { 
  2. public XmlPullFeedParser(String feedUrl) { 
  3. super(feedUrl); 
  4. public List< Message > parse() { 
  5. List< Message > messages = null
  6. XmlPullParser parser = Xml.newPullParser(); 
  7. try { 
  8. // auto-detect the encoding from the stream 
  9. parser.setInput(this.getInputStream(), null); 
  10. int eventType = parser.getEventType(); 
  11. Message currentMessage = null
  12. boolean done = false
  13. while (eventType != XmlPullParser.END_DOCUMENT && !done){ 
  14. String name = null
  15. switch (eventType){ 
  16. case XmlPullParser.START_DOCUMENT: 
  17. messages = new ArrayList< Message >(); 
  18. break
  19. case XmlPullParser.START_TAG: 
  20. name = parser.getName(); 
  21. if (name.equalsIgnoreCase(ITEM)){ 
  22. currentMessage = new Message(); 
  23. else if (currentMessage != null){ 
  24. if (name.equalsIgnoreCase(LINK)){ 
  25. currentMessage.setLink(parser.nextText()); 
  26. else if (name.equalsIgnoreCase(DESCRIPTION)){ 
  27. currentMessage.setDescription(parser.nextText()); 
  28. else if (name.equalsIgnoreCase(PUB_DATE)){ 
  29. currentMessage.setDate(parser.nextText()); 
  30. else if (name.equalsIgnoreCase(TITLE)){ 
  31. currentMessage.setTitle(parser.nextText()); 
  32. break

 

責(zé)任編輯:閆佳明 來源: my.eoe.cn
相關(guān)推薦

2013-06-09 12:49:15

Android開發(fā)XML讀寫XML解析

2013-06-09 13:07:23

Android開發(fā)XML讀寫XML解析

2013-06-09 10:04:35

Android開發(fā)XML讀寫XML解析

2013-06-09 10:37:53

Android開發(fā)XML讀寫XML解析

2013-06-09 10:18:29

Android開發(fā)XML讀寫XML解析

2013-06-09 10:25:56

Android開發(fā)XML讀寫XML解析

2013-06-09 11:31:13

Android開發(fā)XML讀寫XML解析

2011-11-08 10:01:53

TinyXML

2013-06-08 13:02:11

Android開發(fā)XML解析

2013-06-08 11:04:18

Android開發(fā)Pull解析XMLAndroid XML

2022-03-24 12:15:50

MySQL數(shù)據(jù)庫讀寫分離

2010-12-23 09:11:17

讀寫Android文件

2013-06-08 12:49:03

Android開發(fā)XML定義菜單

2013-06-08 13:07:54

Android開發(fā)Android UILayout XML屬

2013-06-08 13:18:50

Android開發(fā)XML構(gòu)造技巧XML解析

2010-01-25 18:22:33

Android使用XM

2013-06-08 13:37:28

Android開發(fā)XML解析Pull方式

2013-06-08 11:13:00

Android開發(fā)XML解析

2013-06-08 13:29:27

Android開發(fā)DOM讀取XMLXML解析

2013-04-01 14:35:10

Android開發(fā)Android自定義x
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)