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

淺談J2ME中XML被第三方API NanoXML解析

開發
本文將簡單談談XML在J2ME中被KXML與NanoXML解析,希望通過本文能對大家了解XML有所幫助。

對于J2ME這類開發平臺來說,XML有其優勢。智能手機硬件和3G將移動應用放大到更加廣闊的范圍,本文將介紹的是XML在J2ME中被KXML與NanoXML解析,也是J2ME開發的一個重點。

要使用XML作為網絡中傳輸通訊,勢必在傳輸雙方的發送方跟接收端都具備對XML文件的解析能力才能實現正常的數據交換并完成通訊過程。由于在移動設備硬件中的CPU跟內存的不足,跟網絡傳輸速率的欠缺,而且解析XML需要消耗更多的資源,因此使得XML在移動設備中的使用收到了限制,在更多時候我們采用的是采用基于基本數據流的形式(如J2ME中的DataInputStream和DataOutputStream)在讀取和發送數據。然而,隨著智能手機硬件的提高跟普及以及3G網絡的落實,使得在不久我們將能無顧慮地在移動通訊中使用XML了。

在J2ME體系中,對xml的解析有比較有名的第三方解析API,分別為KXML和NanoXML,他們都提供了對解析xml的支持。KXML在解析XML過程中會對文件內容一層一層進行解析,因此成為增量式解析器,比較適合大文件的解析。而NanoXML是一次性解析器,在一次時間里就把整個xml文檔解析完,因此不適合大文件的解析,會造成內存不足的現象。有關這兩種解析器網上都有介紹過,在這里對它們的使用進行總結。

一、創建實例對象

1、使用NanoXML時由于是一次性機制,因此將xml數據流一次性封裝創建解析實例對象kXMLElement
 

  1. view plaincopy to clipboardprint?  
  2.  /**    
  3. HttpConnection conn;    
  4. String xml;    
  5. Reader r;    
  6. */    
  7. //......獲取網絡連接對象或者其他形式數據對象     
  8.  InputStreamReader isrDoc =     
  9.  new InputStreamReader(conn.openInputStream());//獲取輸入流,這里以HttpConnection為例     
  10.  kXMLElement kXMLeroot = new kXMLElement();//創建實例對象     
  11.  try {     
  12.   kXMLeroot.parseFromReader(isrDoc);     
  13.  }     
  14.  catch( kXMLParseException kpe ){     
  15. kpe.printStackTrace();     
  16.  }     
  17.  catch( IOException ie ){     
  18. ie.printStackTrace();     
  19. }     
  20.         
  21.  /**  
  22. HttpConnection conn;  
  23. String xml;  
  24. Reader r;  
  25. */  
  26. //......獲取網絡連接對象或者其他形式數據對象  
  27.  InputStreamReader isrDoc =  
  28.  new InputStreamReader(conn.openInputStream());//獲取輸入流,這里以HttpConnection為例  
  29.  kXMLElement kXMLeroot = new kXMLElement();//創建實例對象  
  30.  try {  
  31.   kXMLeroot.parseFromReader(isrDoc);  
  32.  }  
  33.  catch( kXMLParseException kpe ){  
  34. kpe.printStackTrace();  
  35.  }  
  36.  catch( IOException ie ){  
  37. ie.printStackTrace();  

2、使用kxml時首先需要得到一個XmlParser實例對象,在構造方法中傳入Reader參數

  1. view plaincopy to clipboardprint?  
  2.  /**    
  3. HttpConnection conn;    
  4. String xml;    
  5. Reader r;    
  6. */    
  7. InputStreamReader isrDoc =     
  8.  new InputStreamReader(conn.openInputStream());//獲取輸入流,這里以HttpConnection為例     
  9.  XmlParser parser = new XmlParser(isrDoc);//創建實例對象    
  10.  /**  
  11. HttpConnection conn;  
  12. String xml;  
  13. Reader r;  
  14. */ 
  15. InputStreamReader isrDoc =  
  16.  new InputStreamReader(conn.openInputStream());//獲取輸入流,這里以HttpConnection為例  
  17.  XmlParser parser = new XmlParser(isrDoc);//創建實例對象 

二、KXML解析XML

  1.  view plaincopy to clipboardprint?  
  2. boolean parsing = true;//判斷是否到達***一個document標簽     
  3. while()     
  4. {     
  5. ParseEvent event = parser.read();     
  6. swith(event.getType())     
  7. {     
  8. case Xml.START_TAG:     
  9. ....//處理開始標簽tag     
  10. break;     
  11. case Xml.END_TAG:     
  12. ...//處理結束標簽tag     
  13. break;     
  14. .......//其他標簽處理     
  15. case Xml.END_DOCUMENT:     
  16. ...//最末tag     
  17. parsing = false;     
  18. break;     
  19. }     
  20. }    
  21. boolean parsing = true;//判斷是否到達***一個document標簽  
  22. while()  
  23. {  
  24. ParseEvent event = parser.read();  
  25. swith(event.getType())  
  26. {  
  27. case Xml.START_TAG:  
  28. ....//處理開始標簽tag  
  29. break;  
  30. case Xml.END_TAG:  
  31. ...//處理結束標簽tag  
  32. break;  
  33. .......//其他標簽處理  
  34. case Xml.END_DOCUMENT:  
  35. ...//最末tag  
  36. parsing = false;  
  37. break;  
  38. }  

三、NanoXML解析XML

  1. view plaincopy to clipboardprint?  
  2.  Vector list = kXMLeroot.getChildren();//獲取子節點列表     
  3.      Vector contents = new Vector();//用于獲取節點內容     
  4.      for(int i = 0; i < list.size(); ++i){     
  5.    kXMLElement node = (kXMLElement) list.elementAt(i);     
  6.    String tag = node.getTagName();     
  7.    if(tag == nullcontinue;     
  8.    if(!tag.equals( "item" )) continue;     
  9.    contents.addElement(node.getContents());     
  10.    }     
  11.      String[] contentStrs = new String[contents.size()];//轉化為字符串數組    
  12.  Vector list = kXMLeroot.getChildren();//獲取子節點列表  
  13.      Vector contents = new Vector();//用于獲取節點內容  
  14.      for(int i = 0; i < list.size(); ++i){  
  15.    kXMLElement node = (kXMLElement) list.elementAt(i);  
  16.    String tag = node.getTagName();  
  17.    if(tag == nullcontinue;  
  18.    if(!tag.equals( "item" )) continue;  
  19.    contents.addElement(node.getContents());  
  20.    }  
  21.      String[] contentStrs = new String[contents.size()];//轉化為字符串數組 

NanoXML是一個能在CLDC 環境下運行的開放源代碼,NanoXML是非常小(6KB)的一步XML解析器;KXML是一個只占很小存儲空間的XML語法分析程序,對于J2ME應用程序非常適合。

原文標題:J2ME中KXML與NanoXML解析XML總結

鏈接:http://www.cnblogs.com/psunny/archive/2009/09/25/1573839.html

【編輯推薦】

  1. .NET對象的XML序列化和反序列化概念淺析
  2. Linq實現XML轉換淺談
  3. 簡述C# XML解析方法的特點及應用
  4. 淺析C# XML解析實例
  5. C# Lambda Expression使用實例解析
責任編輯:彭凡 來源: 博客園
相關推薦

2010-09-30 12:53:00

J2MECSS

2019-07-30 11:35:54

AndroidRetrofit

2010-09-29 08:57:04

J2ME前景

2010-09-29 15:35:04

Item類J2ME

2010-09-29 16:20:06

J2MEWeb服務API

2009-07-07 11:10:01

JSP實現通信

2009-07-14 18:03:43

Myeclipse J

2015-11-05 16:44:37

第三方登陸android源碼

2010-09-29 12:45:50

J2ME

2010-09-29 13:50:31

J2MEJ2SE

2010-10-09 14:29:44

J2MEfontcolor

2009-06-23 11:30:16

RMSJ2ME

2010-09-30 16:06:21

J2ME平臺

2011-12-02 10:37:14

JavaJ2ME

2010-09-29 09:19:39

J2ME開發工具

2010-09-29 10:15:35

JDKJ2EEJ2SE

2009-10-10 13:54:20

OPhone

2010-10-09 15:07:09

J2MEWeb服務

2010-09-29 09:59:22

J2ME配置

2014-07-23 08:55:42

iOSFMDB
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久乱弄 | 久久久久久网站 | 亚洲精品中文在线观看 | 在线免费观看黄色av | 九九亚洲精品 | 国产精品久久久久久238 | 免费一级欧美在线观看视频 | 亚洲色图婷婷 | 欧美午夜视频 | 成人免费一级视频 | 国产精品永久免费观看 | 超级乱淫av片免费播放 | 欧美成人免费在线 | 五月天激情电影 | 欧美一级片中文字幕 | www.青娱乐| 成人福利在线视频 | 久久久久国产一区二区三区 | 中文字幕国产精品视频 | 日韩天堂av | 午夜看片网站 | 午夜私人影院在线观看 | 亚洲国产精品久久久久久 | 天天干天天草 | 国产.com | 国产成人福利视频在线观看 | 日韩亚洲视频 | 欧美日韩亚洲一区 | av黄色在线| 欧洲一区二区三区 | 成人欧美一区二区三区黑人孕妇 | 在线观看成人小视频 | 日韩中文字幕视频在线观看 | 99精品免费在线观看 | 免费观看一级特黄欧美大片 | 国产免费一区二区 | 男人天堂网址 | 欧美中文字幕一区二区三区亚洲 | 欧美色专区| 久草色视频 | 国产精品久久久久久婷婷天堂 |