成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android XML讀寫(五)

移動開發 Android
de >RssHandlerde >類為 SAX 解析器生成的事件所對應的所有方法都提供了一個默認的非操作實現。這允許子類根據需要僅覆蓋一些方法。de >RssHandlerde > 提供了一個額外的 API,即 de >getMessagesde >。它返回處理程序在從 SAX 解析器接收事件時所收集的 de >Messagede > 對象列表。

de >RssHandlerde > 類擴展了 de >org.xml.sax.helpers.DefaultHandlerde > 類。該類為 SAX 解析器生成的事件所對應的所有方法都提供了一個默認的非操作實現。這允許子類根據需要僅覆蓋一些方法。de >RssHandlerde > 提供了一個額外的 API,即 de >getMessagesde >。它返回處理程序在從 SAX 解析器接收事件時所收集的 de >Messagede > 對象列表。它有另外兩個內部變量,de >currentMessagede > 針對被解析的 de >Messagede > 實例,以及名稱為 de >builderde > 的 de >StringBuilderde > 變量,用于存儲文本節點中的字符數據。解析器將相應事件發送給處理程序時會調用 de >startDocumentde > 方法,這兩個變量的初始化操作就是在此時完成。

查看de >startElementde > 方法。在XML文檔中每次遇到開始標記時都會調用它。您只關心該標記何時為 de >ITEMde > 標記。對于這種情況,您將創建一個新的 de >Messagede >。現在來看 de >charactersde > 方法。遇到文本節點中的字符數據時便會調用此方法。數據只是被添加到 de >builderde > 變量中。***,我們來看 de >endElementde > 方法。遇到結束標記時會調用此方法。對于與某 de >Messagede > 屬性相對應的標記,如 de >TITLEde > 和 de >LINKde >,則使用 de >builderde > 變量中的數據在 de >currentMessagede > 上設置適當的屬性。如果結束標記是一個 de >ITEMde >,則 de >currentMessagede > 將被添加到 Messages 列表中。所有這些都是非常典型的 SAX 解析;此處的一切都不是 Android 所特有的。因此,如果您知道如何編寫 Java SAX 解析器,則應該知道如何編寫 Android SAX 解析器。但是,android sdk 確實在 SAX 上添加了一些便捷的特性。

Android SAX 解析器

java代碼:

  1. public class AndroidSaxFeedParser extends BaseFeedParser { 
  2. public AndroidSaxFeedParser(String feedUrl) { 
  3. super(feedUrl); 
  4. public List< Message > parse() { 
  5. RssHandler handler = new RssHandler(); 
  6. try { 
  7. Xml.parse(this.getInputStream(), Xml.Encoding.UTF_8, handler); 
  8. catch (Exception e) { 
  9. throw new RuntimeException(e); 
  10. return handler.getMessages(); 

注意,這個類仍然使用了一個標準的 SAX 處理程序,因此您僅僅重用了所示的 de >RssHandlerde >。能夠重用 SAX 處理程序是非常不錯的,但其代碼稍微有些復雜。您可以想像,如果需要解析一個更加復雜的 XML 文檔,則處理程序可能會帶來各種各樣的 bug。舉例來說,回頭看看 de >endElementde > 方法。注意,在嘗試設置屬性之前,它檢查了 de >currentMessagede > 是否為 null。現在,再回頭看看示例 XML。 注意,de >ITEMde > 標記外部有一些 de >TITLEde > 和 de >LINKde > 標記。這就是使用 null 檢查的原因。否則,每一個 de >TITLEde > 標記 會導致一個 de >NullPointerExceptionde >。Android 提供了自己獨有的 SAX API,它排除了您編寫自己的 SAX 處理程序的需要。

經過簡化的 Android SAX 解析器

java代碼:

  1. public class AndroidSaxFeedParser extends BaseFeedParser { 
  2. public AndroidSaxFeedParser(String feedUrl) { 
  3. super(feedUrl); 
  4. public List< Message > parse() { 
  5. final Message currentMessage = new Message(); 
  6. RootElement root = new RootElement("rss"); 
  7. final List< Message > messages = new ArrayList< Message >(); 
  8. Element channel = root.getChild("channel"); 
  9. Element item = channel.getChild(ITEM); 
  10. item.setEndElementListener(new EndElementListener(){ 
  11. public void end() { 
  12. messages.add(currentMessage.copy()); 
  13. }); 
  14. item.getChild(TITLE).setEndTextElementListener(new EndTextElementListener(){ 
  15. public void end(String body) { 
  16. currentMessage.setTitle(body); 
  17. }); 
  18. item.getChild(LINK).setEndTextElementListener(new EndTextElementListener(){ 
  19. public void end(String body) { 
  20. currentMessage.setLink(body); 
  21. }); 
  22. item.getChild(DESCRIPTION).setEndTextElementListener(new 
  23. EndTextElementListener(){ 
  24. public void end(String body) { 
  25. currentMessage.setDescription(body); 
  26. }); 
  27. item.getChild(PUB_DATE).setEndTextElementListener(new EndTextElementListener(){ 
  28. public void end(String body) { 
  29. currentMessage.setDate(body); 
  30. }); 
  31. try { 
  32. Xml.parse(this.getInputStream(), Xml.Encoding.UTF_8,root.getContentHandler()); 
  33. catch (Exception e) { 
  34. throw new RuntimeException(e); 
  35. return messages; 

 

責任編輯:閆佳明 來源: my.eoe.cn
相關推薦

2013-06-09 10:18:29

Android開發XML讀寫XML解析

2013-06-09 10:25:56

Android開發XML讀寫XML解析

2013-06-09 10:37:53

Android開發XML讀寫XML解析

2013-06-09 10:04:35

Android開發XML讀寫XML解析

2013-06-09 12:49:15

Android開發XML讀寫XML解析

2013-06-09 12:53:05

Android開發XML讀寫XML解析

2013-06-09 13:07:23

Android開發XML讀寫XML解析

2011-11-08 10:01:53

TinyXML

2022-11-15 09:24:16

littlefs文件讀寫

2013-06-08 13:02:11

Android開發XML解析

2017-03-01 16:40:12

Linux驅動技術設備阻塞

2025-01-24 08:38:47

2013-06-08 11:04:18

Android開發Pull解析XMLAndroid XML

2013-06-08 13:07:54

Android開發Android UILayout XML屬

2013-06-08 13:18:50

Android開發XML構造技巧XML解析

2010-12-23 09:11:17

讀寫Android文件

2013-06-08 12:49:03

Android開發XML定義菜單

2012-04-03 14:09:27

Android

2013-04-01 14:35:10

Android開發Android自定義x

2013-06-08 13:29:27

Android開發DOM讀取XMLXML解析
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲免费视频在线观看 | 亚洲精品字幕 | 伊人精品一区二区三区 | 国产在线精品一区二区三区 | 亚洲另类春色偷拍在线观看 | 久久久久国产精品一区三寸 | 蜜桃av一区二区三区 | 久久久国产一区二区三区 | 性高湖久久久久久久久3小时 | 欧一区二区 | 男人的天堂亚洲 | 亚洲欧美日韩电影 | 色婷婷亚洲国产女人的天堂 | 久久精品国产一区老色匹 | 日韩精品视频在线 | 99爱在线 | 99久久婷婷国产亚洲终合精品 | 日日夜夜天天综合 | 婷婷国产一区 | 天天天操操操 | 国产目拍亚洲精品99久久精品 | 91视频在线看 | 精品久久久精品 | 国产日韩欧美 | 国产精品久久久久久久久久三级 | 欧美一级二级三级视频 | 欧美高清视频一区 | 欧美精品一二三 | 日韩视频在线一区 | 91精品国产一区二区 | 精品久久久久久 | 久久成人精品视频 | 久久99蜜桃综合影院免费观看 | 天堂国产 | 久久久久久蜜桃一区二区 | 最新av中文字幕 | 自拍亚洲| 亚洲成人精选 | 热久久国产 | 欧美一区二区在线播放 | 日韩中文字幕在线播放 |