日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Androidxml讀寫(八)

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. }
  9. break;
  10. }
  11. eventType = parser.next();
  12. }
  13. } catch (Exception e) {
  14. throw new RuntimeException(e);
  15. }
  16. return messages;
  17. }
  18. }

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

目前為止,我一直專注于通過 Internet 解析 XML。但是,有時(shí)您的應(yīng)用程序可能需要將 XML 發(fā)送到遠(yuǎn)程服務(wù)器。顯然,您可以只使用一個(gè) 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. }
  23. serializer.endTag("", "messages");
  24. serializer.endDocument();
  25. return writer.toString();
  26. } catch (Exception e) {
  27. throw new RuntimeException(e);
  28. }
  29. }

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


本文名稱:Androidxml讀寫(八)
當(dāng)前路徑:http://www.dlmjj.cn/article/djgsegd.html