在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > SAX PULL DOCUMENT解析XML總結(jié)

            SAX PULL DOCUMENT解析XML總結(jié)

            作者: 時間:2016-09-12 來源:網(wǎng)絡(luò) 收藏

            一、SAX

            本文引用地址:http://www.biyoush.com/article/201609/303742.htm

            1、繼承DefaultHandler類,重寫startDocument、startElement、character、endElement、endDocument方法,startDocument在讀取時調(diào)用,可寫一些實例化列表等;startElement在讀取每個標(biāo)簽時調(diào)用,通過判斷歷史標(biāo)簽需要是否為需要獲取的值的頭;characters用來讀取標(biāo)簽中的值;endElement讀取標(biāo)簽的結(jié)束,用來保存characters獲取的值;endDocument一般不做處理。

            2、調(diào)用,用SAXParser或者XMLReader來

            SAXParser

            SAXHandlerParseService saxForHandler = newSAXHandlerParseService();
            SAXParserFactory spf = SAXParserFactory.newInstance();
            SAXParser saxParse = spf.newSAXParser();
            saxParse.parse(input, saxForHandler);
            ListMapString, Object>> userList = saxForHandler.getUser();

            XMLReader解析

            SAXHandlerParseService saxForHandler = new SAXHandlerParseService();

            SAXParserFactory spf = SAXParserFactory.newInstance();

            SAXParser saxParse = spf.newSAXParser();

            // 為xmlReader設(shè)置內(nèi)容處理器

            XMLReader reader = saxParse.getXMLReader();

            reader.setContentHandler(saxForHandler);

            // 開始賦值

            reader.parse(new InputSource(new StringReader(xml)));

            List> userList = saxForHandler.getUser();

            在解析時,一定要小心,不要忽略空白的地方,Sax解析器會把它認(rèn)為是一個TextNod

            二、PULL解析

            與SAX類似,同樣有START_DOCUMENT、START_ELEMENT、CHARACTERS、END_ELEMENT、END_DOCUMENT

            1、實例化XmlPullParser解析器,設(shè)置輸入編碼(setInput),獲得事件類型(getEventType),用SAX相同的處理進(jìn)行,next()方法往下繼續(xù)讀取

            三、DOCUMENT解析

            1、實例化DocumentBuilderFactory,代碼如下:

            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

            DocumentBuilder builder = factory.newDocumentBuilder();

            Document document = builder.parse(input);

            Element root = document.getDocumentElement();

            2、跟xml傳入的數(shù)據(jù)結(jié)構(gòu)進(jìn)行處理

            3、返回需要的列表值即可

            工程下載:ParseTest.rar

            四、三者區(qū)別

            DOM:

            解析器讀入整個文檔,然后構(gòu)建一個駐留內(nèi)存的樹結(jié)構(gòu),然后代碼就可以使用 DOM 接口來操作這個樹結(jié)構(gòu)。

            優(yōu)點:整個文檔樹在內(nèi)存中,便于操作;支持刪除、修改、重新排列等多種功能;

            缺點:將整個文檔調(diào)入內(nèi)存(包括無用的節(jié)點),浪費時間和空間;

            使用場合:一旦解析了文檔還需多次訪問這些數(shù)據(jù);硬件資源充足(內(nèi)存、CPU)

            SAX/PULL:

            事件驅(qū)動。當(dāng)解析器發(fā)現(xiàn)元素開始、元素結(jié)束、文本、文檔的開始或結(jié)束等時,發(fā)送事件,程序員編寫響應(yīng)這些事件的代碼,保存數(shù)據(jù)。

            優(yōu)點:不用事先調(diào)入整個文檔,占用資源少

            缺點:不是持久的;事件過后,若沒保存數(shù)據(jù),那么數(shù)據(jù)就丟了;無狀態(tài)性;從事件中只能得到文本,但不知該文本屬于哪個元素;

            使用場合:只需XML文檔的少量內(nèi)容,很少回頭訪問;一次性讀取;機器內(nèi)存少;

            注意:SAX 解析器不創(chuàng)建任何對象。



            關(guān)鍵詞: 解析 XML總結(jié)

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉