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

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

使用JSR172解析XML

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


         在上篇文章講述了SonyEriCSSon發布了更好支持企業級應用程序開發的新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());
    }
  使用JSR172解析XML
從這里下載源代碼
總結:本文講述了如何使用JSR 172提供的輕量級XML解析器來解析XML,并給出了具體的代碼。下篇文章我們將一起學習一下如何使用Web Services的遠程調用API。


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



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲wwwav| 高潮白浆女日韩av免费看| 麻豆成人在线看| 97成人精品区在线播放| 久久久久久成人| 欧美极品欧美精品欧美视频| 91亚洲精品久久久久久久久久久久| 午夜精品www| 亚洲人成电影网站色| 97涩涩爰在线观看亚洲| 色综合久久88| 亚洲第一精品夜夜躁人人爽| 日韩av影视综合网| 最新国产精品拍自在线播放| 国产美女扒开尿口久久久| 国产成人鲁鲁免费视频a| 国产精品高潮呻吟视频| 91av在线播放| 日本精品久久中文字幕佐佐木| 国内精品久久久久久久久| 久久久www成人免费精品张筱雨| 久久久免费高清电视剧观看| 国产精品私拍pans大尺度在线| 日韩精品视频免费在线观看| 中文字幕亚洲激情| 日韩小视频在线观看| 欧美性猛交xxxx乱大交极品| 日韩中文字幕视频在线观看| 久久久免费精品视频| 精品亚洲国产成av人片传媒| 色无极亚洲影院| 热门国产精品亚洲第一区在线| 午夜精品久久久99热福利| 久久精品国亚洲| 精品国产乱码久久久久久天美| 欧美麻豆久久久久久中文| 精品夜色国产国偷在线| 国产精品最新在线观看| 美女扒开尿口让男人操亚洲视频网站| 久久精品国产电影| 成人伊人精品色xxxx视频| 欧美在线视频在线播放完整版免费观看| 国产成人亚洲综合91精品| 一区二区亚洲欧洲国产日韩| 成人xvideos免费视频| 久久久久亚洲精品成人网小说| 丝袜情趣国产精品| 国产精品999999| 国产福利精品视频| 国产精品久久久久久av福利软件| 欧美性猛交xxxx乱大交蜜桃| 欧美激情亚洲激情| 国产欧美va欧美va香蕉在线| 欧美国产日韩一区二区在线观看| 欧美一区二区色| 91久久精品久久国产性色也91| 日本久久久久久久久久久| 欧美亚洲成人免费| 亚洲人线精品午夜| 欧美与黑人午夜性猛交久久久| 秋霞av国产精品一区| 日韩在线激情视频| 91在线高清视频| 一区二区成人av| 国产精品久久97| 日韩中文字幕视频在线| 久久九九精品99国产精品| 欧美国产精品va在线观看| 68精品久久久久久欧美| 欧美片一区二区三区| 亚洲男人天堂网站| 国内精品久久久久久久| 国产ts人妖一区二区三区| 日韩成人激情视频| 91免费版网站入口| 亚洲片国产一区一级在线观看| 成人信息集中地欧美| 欧美做受高潮1| 欧美成人一区二区三区电影| 亚洲视频在线播放| 日韩在线小视频| 国产亚洲激情视频在线| 欧美大片免费观看在线观看网站推荐| 国产主播欧美精品| 欧美一级片一区| 7777精品久久久久久| 91chinesevideo永久地址| 欧美日韩国产一区中文午夜| 亚洲精品日韩丝袜精品| 国产精品久久久久久久久久99| 亚洲精品v欧美精品v日韩精品| 萌白酱国产一区二区| 欧美激情第一页xxx| 超碰97人人做人人爱少妇| 欧美性猛交xxxxx免费看| 国产精品7m视频| 91精品国产综合久久久久久蜜臀| 久久视频在线观看免费| 日韩在线视频一区| 91精品中国老女人| 国产精品精品国产| 亚洲国产精品va在线| 亚洲一区亚洲二区亚洲三区| 色爱av美腿丝袜综合粉嫩av| 2023亚洲男人天堂| 亚洲跨种族黑人xxx| 亚洲天堂av图片| 98精品国产高清在线xxxx天堂| 色yeye香蕉凹凸一区二区av| 日本a级片电影一区二区| 欧美成aaa人片免费看| 欧美性猛交xxxx免费看漫画| 日本亚洲精品在线观看| 国产精品电影久久久久电影网| 国产精自产拍久久久久久蜜| 久久久久久久久久国产| 97视频在线观看亚洲| 亚洲欧洲视频在线| 日韩av在线影院| 亚洲aaaaaa| 美日韩丰满少妇在线观看| 国产欧洲精品视频| 中文字幕亚洲综合| 国产视频精品va久久久久久| 97久久精品人人澡人人爽缅北| 日韩在线视频中文字幕| 亚洲免费av网址| 91精品国产自产在线老师啪| 日韩欧美大尺度| 欧美日韩亚洲网| 久久99久久99精品免观看粉嫩| 久久精品国产v日韩v亚洲| 欧美日韩国产999| 九九热这里只有精品6| 亚洲一区二区三区成人在线视频精品| 精品偷拍一区二区三区在线看| 精品国产一区二区三区久久久狼| 91牛牛免费视频| 午夜精品免费视频| 亚洲精品久久在线| 亚洲最新中文字幕| 狠狠色香婷婷久久亚洲精品| 久久精品视频播放| 久久久久国产一区二区三区| 久久九九精品99国产精品| 色中色综合影院手机版在线观看| 国产视频久久久| 精品国产精品三级精品av网址| 日韩av免费一区| 一区二区三区高清国产| 美女性感视频久久久| 欧美电影《睫毛膏》| 亚洲视频在线免费观看| 日韩欧美大尺度| 亚洲性日韩精品一区二区| 亚洲男子天堂网| 国产激情999| 欧美日韩国产成人在线观看| 精品久久久久久久久久国产| 精品国产精品三级精品av网址| 久久综合久中文字幕青草| 在线电影av不卡网址| 国产亚洲成av人片在线观看桃| 日韩av在线播放资源|