亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

手機開發教您使用JSR172解析XML

2019-11-18 16:05:09
字體:
來源:轉載
供稿:網友

  Sony EriCSSon發布了更好支持企業級應用程序開發的新JSR,這其中就包括J2ME Web Service 1.0(JSR 172),索尼愛立信的W600就支持了JSR172。本文講述如何使用JSR 172提供的API來解析xml。
  
  我們知道JSR172是由兩個部分組成的:
  
  1. 一個輕量級的標準XML解析器
  
  2. Web Services的遠程調用API
  
  其中這個JSR172實現的輕量級的XML解析器是JAXP1.2(java API for XML PRocessing)的一個子集。我們可以查看WTK提供的API看到j2me-xml提供的類一共只有12個,這說明這個輕量級的XML解析器是適合在移動電話這種資源受限設備上運行的。下面我們通過一個例子介紹如何使用JSR 172解析XML,首先我們需要準備一個XML文件放在項目當中,內容如下:
  
  諾基亞7610 黑色
  
  值得注意的是當XML文件中包含漢字的時候,我們應該使用文本工具,比如notepad或者Ultral Edit等把它轉換成UTF-8編碼文件,否則解析的結果將包含亂碼。為了保存XML文件中的信息,我們構造一個普通的Java類Phone,它包含兩個成員變量分別對應name和colour,代碼如下所示:
  
  /*
  * Phone.java
  *
  * Created on 2005年8月6日, 下午9:40
  *
  * To change this template, choose Tools Options and locate the template under
  * the Source Creation and Management node. Right-click the template and choose
  * Open. You can then make changes to the template in the Source Editor.
  */
  
  /**
  *
  * @author Administrator
  */
  public class Phone {
  
  private String colour = "";
  private String name = "";
  /** Creates a new instance of Phone */
  public Phone() {
  }
  
  public String getColour() {
  return colour;
  }
  
  public void setColour(String colour) {
  this.colour = colour;
  }
  
  public String getName() {
  return name;
  }
  
  public void setName(String name) {
  this.name = name;
  }
  
  }
  
  在JSR 172中實現的是SAX模式的解析器,它和DOM模式的不同在于,SAX解析器按照順序解析文件并不保存其內容,而DOM解析器則是首先把XML文件解析后存儲在一個對象樹中,可見DOM模式更加耗費內存資源。能夠解析XML之前首先需要創建SAXParser的實例,
  
  SAXParserFactory factory = SAXParserFactory.newInstance();
  SAXParser saxParser = factory.newSAXParser();
  
  接下來我們要獲得XML文件的輸入流,并把它作為其中一個參數傳遞給saxParser的parse方法,
  
  InputStream is = this.getClass().getResourceAsStream("phone.xml");
  saxParser.parse(is,new BasicHandler(this));
  
  那么SAXParser是如何解析xml文件的呢?DefaultHandler是SAX2默認的事件處理器基類,用于處理XML解析事件的方法如下:
  
  startDocument()
  startElement(java.lang.String uri,
  java.lang.String localName, java.lang.String qName, Attributes attributes)
  characters(char[] ch, int start, int length)
  endElement(java.lang.String uri,
  java.lang.String localName, java.lang.String qName)
  endDocument()
  
  默認情況下,DefaultHandler的上述方法什么也不做,因此我們必須自己擴展DefaultHandler并且覆蓋上述的方法。我們的程序中提供了一個BasicHandler用來處理xml文件。class BasicHandler extends DefaultHandler在BasicHandler類中有兩個成員變量
  
  private Vector phones = new Vector();
  private Stack tagStack = new Stack();
  
  phones用來存儲我們已經解析出來的Phone對象,tagStack則用來存放我們解析到的元素名稱,比如sonyericsson,phone,name,colour等。在文檔解釋結束后,也就是在endDocument()方法內我們把解析的結果顯示在手機屏幕上,為了讓讀者可以更清楚地明白SAX解析器的解析順序,這里筆者用了一些打印語句來把重要的信息打印出來,BasicHandler的幾個重要方法如下:
  
  public void startDocument() throws SAXException {}
  
  public void startElement(String uri, String localName,
  String qName, Attributes attributes) throws SAXException {
  System.out.println("the qName is "+qName);
  if(qName.equals("phone")) {
  Phone phone = new Phone();
  phones.addElement(phone);
  }
  
  tagStack.push(qName);
  System.out.println("the tag stack's length is "+tagStack.size());
  }
  
  public void characters(char[] ch, int start, int length)
  throws SAXException {
  String chars = new String(ch, start, length).trim();
  System.out.println("the character is "+chars);
  
  if(chars.length() > 0) {
  String qName = (String)tagStack.peek();
  
  Phone currentPhone = (Phone)phones.lastElement();
  
  if (qName.equals("name")) {
  currentPhone.setName(chars);
  } else if(qName.equals("colour")) {
  currentPhone.setColour(chars);
  }
  }
  }
  
  public void endElement(String uri, String localName, String qName)
  throws SAXException {
  System.out.println("the end qName is "+qName);
  tagStack.pop();
  }
  
  public void endDocument() throws SAXException {
  StringBuffer result = new StringBuffer();
  for (int i=0; i
  Phone currentPhone = (Phone)phones.elementAt(i);
  result.append(currentPhone.getName() + " 是 " + currentPhone.getColour() + "/n");
  }
  
  helloXML.alert(result.toString());
  }
  
  總結:本文講述了如何使用JSR 172提供的輕量級XML解析器來解析XML,并給出了具體的代碼。下篇文章我們將一起學習一下如何使用Web Services的遠程調用API。

(出處:http://www.49028c.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产在线视频一区| 91中文精品字幕在线视频| 精品国产欧美成人夜夜嗨| 91久久精品日日躁夜夜躁国产| 91wwwcom在线观看| 日韩精品福利在线| 国产一区视频在线播放| 国产小视频国产精品| 亚洲精品在线看| 国产视频精品自拍| 一区二区三区在线播放欧美| 日韩精品在线观看一区| www.欧美精品| 最新国产成人av网站网址麻豆| 成人精品久久一区二区三区| 国产精品mp4| 久久久精品久久久| 欧美老肥婆性猛交视频| 尤物yw午夜国产精品视频| 中文字幕亚洲情99在线| 亚洲天堂男人天堂女人天堂| 亚洲天堂av网| 亚洲视频国产视频| 色av中文字幕一区| 亚洲精品国产综合区久久久久久久| 久久免费精品日本久久中文字幕| 国产精品亚洲欧美导航| 日韩欧美大尺度| 欧美激情精品久久久久久久变态| 国产精品视频专区| 亚洲第一福利网站| 日韩av手机在线观看| 亚洲欧美999| 一本色道久久88综合亚洲精品ⅰ| 久久精品精品电影网| 亚洲最新av在线网站| 狠狠做深爱婷婷久久综合一区| 亚洲视频日韩精品| 欧美日韩美女视频| 日本人成精品视频在线| 亚洲香蕉成视频在线观看| 亚洲r级在线观看| 视频一区视频二区国产精品| 欧美人在线观看| 亚洲成人教育av| 久久精彩免费视频| 亚洲精品久久久一区二区三区| 日韩中文在线中文网三级| 国产精品永久免费在线| 国产精品久久久久7777婷婷| 久久色精品视频| 国产精品第七十二页| 九九视频直播综合网| 久久免费视频这里只有精品| 九九热在线精品视频| 91麻豆国产语对白在线观看| 78m国产成人精品视频| 这里只有精品视频在线| 国产精品福利网| 日韩av电影国产| 欧美在线观看网站| 日韩性xxxx爱| 国产精品视频一| 亚洲а∨天堂久久精品9966| 亚洲在线免费看| 欧美性猛交xxxxx水多| 伊是香蕉大人久久| 国产精品白嫩美女在线观看| 精品女同一区二区三区在线播放| 亚洲视频999| 欧美第一淫aaasss性| 亚洲欧美综合精品久久成人| 国产精品视频在线播放| 中文字幕成人精品久久不卡| 亚洲淫片在线视频| 欧美黄色性视频| 欧美激情网友自拍| 青青草成人在线| 91网站免费观看| 国产精品日韩久久久久| 亚洲国产成人在线播放| 国产精品福利网站| 中文字幕日韩欧美在线| 国产精品黄页免费高清在线观看| 美日韩精品免费观看视频| 欧美黑人性猛交| 国产精品露脸av在线| 麻豆国产精品va在线观看不卡| 中文字幕亚洲第一| 国产精品久久久久久久7电影| 亚洲欧美综合精品久久成人| 亚洲视频综合网| 欧美主播福利视频| 久久精品国产久精国产一老狼| 91精品视频免费观看| 亚洲人成网站999久久久综合| 欧美成人中文字幕| 亚洲二区在线播放视频| 精品国产乱码久久久久久天美| 欧美又大粗又爽又黄大片视频| 中文字幕欧美精品日韩中文字幕| 亚洲视频在线免费观看| 日韩毛片中文字幕| 91免费视频网站| 欧美午夜视频在线观看| 久久精品国产v日韩v亚洲| 欧美大尺度电影在线观看| 欧美成年人视频网站欧美| 欧美成人小视频| 欧美一区二区三区精品电影| 欧美一级bbbbb性bbbb喷潮片| 高清欧美电影在线| 亚洲欧美日韩国产精品| 久久精品国产久精国产一老狼| 自拍偷拍亚洲区| 亚洲欧洲视频在线| 国产精品精品国产| 国产69精品久久久久9999| 91精品国产高清久久久久久91| 国产亚洲美女久久| 国产精品久久久久影院日本| 亚洲成在人线av| 宅男66日本亚洲欧美视频| 亚洲天堂色网站| 久久影院免费观看| 久久资源免费视频| 国产一区二区香蕉| 91亚洲一区精品| 日产精品久久久一区二区福利| 久久深夜福利免费观看| 日韩精品免费看| 青青青国产精品一区二区| 成人淫片在线看| 久久久久久久久久久久久久久久久久av| 美女啪啪无遮挡免费久久网站| 在线观看91久久久久久| 国产精品亚洲精品| 欧美性猛xxx| 亚洲性夜色噜噜噜7777| 亚洲欧洲中文天堂| 91精品国产综合久久香蕉的用户体验| 久久精品中文字幕一区| 国产精品极品美女粉嫩高清在线| 亚洲黄页视频免费观看| 4444欧美成人kkkk| 色综合久久悠悠| 亚洲精品福利视频| 精品高清美女精品国产区| 亚洲第一av网| 欧美成人精品在线观看| 国产极品精品在线观看| 国产日韩欧美中文在线播放| 欧美日韩成人免费| 亚洲一区二区免费| 色悠久久久久综合先锋影音下载| 国产99久久久欧美黑人| 日韩成人激情视频| 午夜精品一区二区三区在线视| 久久精品视频99| 日韩中文字幕在线观看| 国产午夜精品免费一区二区三区| 国产精品成人免费电影| 九九九热精品免费视频观看网站| 国产亚洲欧美另类中文|