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

Android xml讀寫(八)

移動開發(fā) Android
pull 解析器的運行方式與 SAX 解析器相似。它提供了類似的事件(開始元素和結(jié)束元素),但您需要使用 de >(parser.next()de > 提取它們。事件將作為數(shù)值代碼被發(fā)送,因此您可以使用一個簡單 case-switch。

java代碼:

  1. case XmlPullParser.END_TAG: 
  2. name = parser.getName(); 
  3. if (name.equalsIgnoreCase(ITEM) && 
  4. currentMessage != null){ 
  5. messages.add(currentMessage); 
  6. else if (name.equalsIgnoreCase(CHANNEL)){ 
  7. done = true
  8. break
  9. eventType = parser.next(); 
  10. catch (Exception e) { 
  11. throw new RuntimeException(e); 
  12. return messages; 

pull 解析器的運行方式與 SAX 解析器相似。它提供了類似的事件(開始元素和結(jié)束元素),但您需要使用 de >(parser.next()de > 提取它們。事件將作為數(shù)值代碼被發(fā)送,因此您可以使用一個簡單 case-switch。注意,解析并未像 SAX 解析那樣監(jiān)聽元素的結(jié)束,而是在開始處完成了大部分處理。在 清單 10 的代碼中,當(dāng)某個元素開始時,您可以調(diào)用 de >parser.nextText()de > 從 XML 文檔中提取所有字符數(shù)據(jù)。還需注意,您設(shè)置了一個標記(布爾變量 de >donede >)來確定何時到達感興趣內(nèi)容的結(jié)束部分。這允許您提早停止讀取 XML 文檔,因為您知道代碼將不會關(guān)心文檔的其余部分。這有時非常實用,特別是當(dāng)您只需要訪問一小部分 XML 文檔時。通過盡快停止解析,您可以極大地減少解析時間。這種優(yōu)化對于連接速度較慢的移動設(shè)備尤為重要。pull 解析器可以提供一些性能優(yōu)勢以及易用性。它還可以用于編寫 XML。

目前為止,我一直專注于通過 Internet 解析 XML。但是,有時您的應(yīng)用程序可能需要將 XML 發(fā)送到遠程服務(wù)器。顯然,您可以只使用一個 de >StringBuilderde > 來創(chuàng)建 XML 字符串。另一種備選方法來自 清單 11 中的 Pull 解析器。

清單 11. 使用 pull 解析器編寫 XML

  1. private String writeXml(List< Message > messages){ 
  2. XmlSerializer serializer = Xml.newSerializer(); 
  3. StringWriter writer = new StringWriter(); 
  4. try { 
  5. serializer.setOutput(writer); 
  6. serializer.startDocument("UTF-8"true); 
  7. serializer.startTag("""messages"); 
  8. serializer.attribute("""number", String.valueOf(messages.size())); 
  9. for (Message msg: messages){ 
  10. serializer.startTag("""message"); 
  11. serializer.attribute("""date", msg.getDate()); 
  12. serializer.startTag("""title"); 
  13. serializer.text(msg.getTitle()); 
  14. serializer.endTag("""title"); 
  15. serializer.startTag("""url"); 
  16. serializer.text(msg.getLink().toExternalForm()); 
  17. serializer.endTag("""url"); 
  18. serializer.startTag("""body"); 
  19. serializer.text(msg.getDescription()); 
  20. serializer.endTag("""body"); 
  21. serializer.endTag("""message"); 
  22. serializer.endTag("""messages"); 
  23. serializer.endDocument(); 
  24. return writer.toString(); 
  25. catch (Exception e) { 
  26. throw new RuntimeException(e); 

de >XmlSerializerde > 類是 前一部分 所使用的 de >XmlPullParserde > 包的一部分。它沒有提取事件,而是將它們推出到數(shù)據(jù)流或編寫程序中。在本例中,它僅僅將事件推送到了一個 de >java.io.StringWriterde > 實例中。它提供了一個直觀的 API,通過各種方法開始和結(jié)束文檔、處理元素以及添加文本或?qū)傩?。這是 de >StringBuilderde > 的一種出色的替換方案,因為它可以更加輕松地確保您的 XML 具有良好結(jié)構(gòu)。

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

2013-06-09 12:49:15

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

2013-06-09 10:04:35

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

2013-06-09 12:53:05

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

2025-01-13 09:00:00

Python文件讀寫代碼

2013-06-08 13:02:11

Android開發(fā)XML解析

2013-06-08 11:04:18

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

2010-12-23 09:11:17

讀寫Android文件

2013-06-08 13:07:54

Android開發(fā)Android UILayout XML屬

2013-06-08 12:49:03

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

2013-06-08 13:18:50

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

2011-05-31 15:45:38

Android 游戲引擎 開源

2014-07-17 11:10:19

Android開源游戲引擎

2013-06-07 13:20:16

Android開發(fā)開源游戲引擎游戲開發(fā)

2013-06-08 13:37:28

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

2010-01-25 18:22:33

Android使用XM
點贊
收藏

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